perf: use smallvec

This commit is contained in:
monosans
2025-10-07 15:50:54 +03:00
parent bde70d6b03
commit 9e6c0e7196
4 changed files with 42 additions and 4 deletions
Generated
+25 -2
View File
@@ -1459,6 +1459,8 @@ dependencies = [
"rlimit",
"serde",
"serde_json",
"smallvec",
"strum 0.27.2",
"tikv-jemallocator",
"tokio",
"tokio-util",
@@ -1583,7 +1585,7 @@ dependencies = [
"itertools 0.13.0",
"lru",
"paste",
"strum",
"strum 0.26.3",
"unicode-segmentation",
"unicode-truncate",
"unicode-width 0.2.0",
@@ -1996,7 +1998,16 @@ version = "0.26.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
dependencies = [
"strum_macros",
"strum_macros 0.26.4",
]
[[package]]
name = "strum"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
dependencies = [
"strum_macros 0.27.2",
]
[[package]]
@@ -2012,6 +2023,18 @@ dependencies = [
"syn",
]
[[package]]
name = "strum_macros"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
dependencies = [
"heck",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "subtle"
version = "2.6.1"
+13 -1
View File
@@ -41,6 +41,11 @@ reqwest-middleware = "=0.4.2"
rlimit = "=0.10.2"
serde = "=1.0.228"
serde_json = "=1.0.145"
smallvec = { version = "=1.15.1", features = [
"const_generics",
"union",
], optional = true }
strum = { version = "=0.27.2", features = ["derive"], optional = true }
tokio = { version = "=1.47.1", features = ["full"] }
tokio-util = "=0.7.16"
toml = "=0.9.7"
@@ -64,7 +69,14 @@ jemalloc = ["dep:tikv-jemallocator"]
mimalloc_v2 = ["dep:mimalloc"]
mimalloc_v3 = ["dep:mimalloc", "mimalloc/v3"]
tokio-current-thread = []
tui = ["dep:crossterm", "dep:futures", "dep:ratatui", "dep:tui-logger"]
tui = [
"dep:crossterm",
"dep:futures",
"dep:smallvec",
"dep:strum",
"dep:ratatui",
"dep:tui-logger",
]
[profile.release]
strip = true
+1
View File
@@ -16,6 +16,7 @@ use crate::{
#[derive(
Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, serde::Serialize,
)]
#[cfg_attr(feature = "tui", derive(strum::EnumCount))]
#[serde(rename_all = "lowercase")]
pub enum ProxyType {
Http,
+3 -1
View File
@@ -17,6 +17,7 @@ use ratatui::{
text::{Line, Text},
widgets::{Block, Gauge},
};
use strum::EnumCount as _;
use tui_logger::{TuiLoggerWidget, TuiWidgetEvent, TuiWidgetState};
use crate::{
@@ -205,7 +206,8 @@ fn draw(f: &mut Frame<'_>, state: &AppState, logger_state: &TuiWidgetState) {
);
drop(ipdb_layout);
let mut proxy_types: Vec<_> = state.sources_total.keys().collect();
let mut proxy_types: smallvec::SmallVec<[_; ProxyType::COUNT]> =
state.sources_total.keys().collect();
proxy_types.sort_unstable();
let proxies_layout = Layout::default()