mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-29 19:17:20 +00:00 
			
		
		
		
	 1fa64a24b8
			
		
	
	
		1fa64a24b8
		
			
		
	
	
	
		
			
	
		
	
	
		
			Some checks failed
		
		
	
	CI / Determine changes (push) Has been cancelled
				
			CI / cargo fmt (push) Has been cancelled
				
			CI / cargo build (release) (push) Has been cancelled
				
			CI / mkdocs (push) Has been cancelled
				
			CI / python package (push) Has been cancelled
				
			CI / pre-commit (push) Has been cancelled
				
			[ty Playground] Release / publish (push) Has been cancelled
				
			CI / cargo clippy (push) Has been cancelled
				
			CI / cargo test (linux) (push) Has been cancelled
				
			CI / cargo test (linux, release) (push) Has been cancelled
				
			CI / cargo test (windows) (push) Has been cancelled
				
			CI / cargo test (wasm) (push) Has been cancelled
				
			CI / cargo build (msrv) (push) Has been cancelled
				
			CI / cargo fuzz build (push) Has been cancelled
				
			CI / fuzz parser (push) Has been cancelled
				
			CI / test scripts (push) Has been cancelled
				
			CI / ecosystem (push) Has been cancelled
				
			CI / Fuzz for new ty panics (push) Has been cancelled
				
			CI / cargo shear (push) Has been cancelled
				
			CI / formatter instabilities and black similarity (push) Has been cancelled
				
			CI / test ruff-lsp (push) Has been cancelled
				
			CI / check playground (push) Has been cancelled
				
			CI / benchmarks-instrumented (push) Has been cancelled
				
			CI / benchmarks-walltime (push) Has been cancelled
				
			
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use std::path::Path;
 | |
| 
 | |
| use ruff_benchmark::criterion::{
 | |
|     BenchmarkId, Criterion, Throughput, criterion_group, criterion_main,
 | |
| };
 | |
| 
 | |
| use ruff_benchmark::{
 | |
|     LARGE_DATASET, NUMPY_CTYPESLIB, NUMPY_GLOBALS, PYDANTIC_TYPES, TestCase, UNICODE_PYPINYIN,
 | |
| };
 | |
| use ruff_python_formatter::{PreviewMode, PyFormatOptions, format_module_ast};
 | |
| use ruff_python_parser::{Mode, ParseOptions, parse};
 | |
| use ruff_python_trivia::CommentRanges;
 | |
| 
 | |
| #[cfg(target_os = "windows")]
 | |
| #[global_allocator]
 | |
| static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
 | |
| 
 | |
| #[cfg(all(
 | |
|     not(target_os = "windows"),
 | |
|     not(target_os = "openbsd"),
 | |
|     any(
 | |
|         target_arch = "x86_64",
 | |
|         target_arch = "aarch64",
 | |
|         target_arch = "powerpc64",
 | |
|         target_arch = "riscv64"
 | |
|     )
 | |
| ))]
 | |
| #[global_allocator]
 | |
| static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
 | |
| 
 | |
| fn create_test_cases() -> Vec<TestCase> {
 | |
|     vec![
 | |
|         TestCase::fast(NUMPY_GLOBALS.clone()),
 | |
|         TestCase::fast(UNICODE_PYPINYIN.clone()),
 | |
|         TestCase::normal(PYDANTIC_TYPES.clone()),
 | |
|         TestCase::normal(NUMPY_CTYPESLIB.clone()),
 | |
|         TestCase::slow(LARGE_DATASET.clone()),
 | |
|     ]
 | |
| }
 | |
| 
 | |
| fn benchmark_formatter(criterion: &mut Criterion) {
 | |
|     let mut group = criterion.benchmark_group("formatter");
 | |
| 
 | |
|     for case in create_test_cases() {
 | |
|         group.throughput(Throughput::Bytes(case.code().len() as u64));
 | |
| 
 | |
|         group.bench_with_input(
 | |
|             BenchmarkId::from_parameter(case.name()),
 | |
|             &case,
 | |
|             |b, case| {
 | |
|                 // Parse the source.
 | |
|                 let parsed = parse(case.code(), ParseOptions::from(Mode::Module))
 | |
|                     .expect("Input should be a valid Python code");
 | |
| 
 | |
|                 let comment_ranges = CommentRanges::from(parsed.tokens());
 | |
| 
 | |
|                 b.iter(|| {
 | |
|                     let options = PyFormatOptions::from_extension(Path::new(case.name()))
 | |
|                         .with_preview(PreviewMode::Enabled);
 | |
|                     let formatted =
 | |
|                         format_module_ast(&parsed, &comment_ranges, case.code(), options)
 | |
|                             .expect("Formatting to succeed");
 | |
| 
 | |
|                     formatted.print().expect("Printing to succeed")
 | |
|                 });
 | |
|             },
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     group.finish();
 | |
| }
 | |
| 
 | |
| criterion_group!(formatter, benchmark_formatter);
 | |
| criterion_main!(formatter);
 |