Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T05:12:15.804Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

sorting.rs

78 lines · 2.6 KB · rust
1use criterion::{Criterion, criterion_group, criterion_main};
2use project::{Entry, EntryKind, GitEntry, ProjectEntryId};
3use project_panel::par_sort_worktree_entries;
4use settings::{ProjectPanelSortMode, ProjectPanelSortOrder};
5use std::sync::Arc;
6use util::rel_path::RelPath;
7
8fn load_linux_repo_snapshot() -> Vec<GitEntry> {
9    let file = std::fs::read_to_string(concat!(
10        env!("CARGO_MANIFEST_DIR"),
11        "/benches/linux_repo_snapshot.txt"
12    ))
13    .expect("Failed to read file");
14    file.lines()
15        .filter_map(|line| {
16            let kind = match line.chars().next() {
17                Some('f') => EntryKind::File,
18                Some('d') => EntryKind::Dir,
19                _ => return None,
20            };
21
22            let entry = Entry {
23                kind,
24                path: Arc::from(RelPath::from_unix_str(&(line.trim_end()[2..])).unwrap()),
25                id: ProjectEntryId::default(),
26                size: 0,
27                inode: 0,
28                mtime: None,
29                canonical_path: None,
30                is_ignored: false,
31                is_always_included: false,
32                is_external: false,
33                is_private: false,
34                is_hidden: false,
35                char_bag: Default::default(),
36                is_fifo: false,
37            };
38            Some(GitEntry {
39                entry,
40                git_summary: Default::default(),
41            })
42        })
43        .collect()
44}
45fn criterion_benchmark(c: &mut Criterion) {
46    let snapshot = load_linux_repo_snapshot();
47
48    let modes = [
49        ("DirectoriesFirst", ProjectPanelSortMode::DirectoriesFirst),
50        ("Mixed", ProjectPanelSortMode::Mixed),
51        ("FilesFirst", ProjectPanelSortMode::FilesFirst),
52    ];
53    let orders = [
54        ("Default", ProjectPanelSortOrder::Default),
55        ("Upper", ProjectPanelSortOrder::Upper),
56        ("Lower", ProjectPanelSortOrder::Lower),
57        ("Unicode", ProjectPanelSortOrder::Unicode),
58    ];
59
60    for (mode_name, mode) in &modes {
61        for (order_name, order) in &orders {
62            c.bench_function(
63                &format!("Sort linux worktree snapshot ({mode_name}, {order_name})"),
64                |b| {
65                    b.iter_batched(
66                        || snapshot.clone(),
67                        |mut snapshot| par_sort_worktree_entries(&mut snapshot, *mode, *order),
68                        criterion::BatchSize::LargeInput,
69                    );
70                },
71            );
72        }
73    }
74}
75
76criterion_group!(benches, criterion_benchmark);
77criterion_main!(benches);
78
Served at tenant.openagents/omega Member data and write actions are omitted.