Compare commits

...

10 Commits

Author SHA1 Message Date
0b181fab6e
榨干! 2024-04-26 01:00:01 +08:00
10fa61ff55
似乎这样更好? 2024-04-26 00:44:09 +08:00
f2f42af0f8
aaaaa 0.1.4 2024-04-26 00:43:50 +08:00
a2f972b72d
啥啥啥,这是啥 2024-04-26 00:37:23 +08:00
bec8f3e5d2
过于夸张的提升了( 2024-04-26 00:32:56 +08:00
01c4d92508
咋刚刚没报错呢 2024-04-26 00:32:32 +08:00
99a1d49539
进行一些边界优化 2024-04-26 00:25:26 +08:00
364364215a
0.1.1 bench 2024-04-26 00:24:53 +08:00
f4ff7b7784
更新一下依赖,顺便加个 bench 2024-04-26 00:14:00 +08:00
d4dd63e2b7
add docs for miner 2024-04-25 23:47:30 +08:00
13 changed files with 548 additions and 235 deletions

192
Cargo.lock generated
View File

@ -40,9 +40,9 @@ dependencies = [
[[package]] [[package]]
name = "allocator-api2" name = "allocator-api2"
version = "0.2.16" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
[[package]] [[package]]
name = "android-tzdata" name = "android-tzdata"
@ -109,9 +109,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.81" version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
dependencies = [ dependencies = [
"backtrace", "backtrace",
] ]
@ -133,13 +133,13 @@ dependencies = [
[[package]] [[package]]
name = "async-trait" name = "async-trait"
version = "0.1.79" version = "0.1.80"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -216,9 +216,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.15.4" version = "3.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]] [[package]]
name = "bytemuck" name = "bytemuck"
@ -234,9 +234,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.90" version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b"
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
@ -252,9 +252,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
[[package]] [[package]]
name = "chrono" name = "chrono"
version = "0.4.37" version = "0.4.38"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
dependencies = [ dependencies = [
"android-tzdata", "android-tzdata",
"iana-time-zone", "iana-time-zone",
@ -262,7 +262,7 @@ dependencies = [
"num-traits", "num-traits",
"serde", "serde",
"wasm-bindgen", "wasm-bindgen",
"windows-targets 0.52.4", "windows-targets 0.52.5",
] ]
[[package]] [[package]]
@ -296,7 +296,7 @@ dependencies = [
"heck", "heck",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -484,7 +484,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -558,7 +558,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -593,9 +593,9 @@ dependencies = [
[[package]] [[package]]
name = "getrandom" name = "getrandom"
version = "0.2.12" version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"js-sys", "js-sys",
@ -919,7 +919,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"windows-targets 0.52.4", "windows-targets 0.52.5",
] ]
[[package]] [[package]]
@ -1214,9 +1214,9 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.79" version = "1.0.81"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@ -1229,9 +1229,9 @@ checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.35" version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
] ]
@ -1244,9 +1244,9 @@ checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab"
[[package]] [[package]]
name = "raw-window-handle" name = "raw-window-handle"
version = "0.6.0" version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b"
[[package]] [[package]]
name = "redox_syscall" name = "redox_syscall"
@ -1435,29 +1435,29 @@ dependencies = [
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.197" version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.197" version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.115" version = "1.0.116"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"itoa", "itoa",
@ -1467,13 +1467,13 @@ dependencies = [
[[package]] [[package]]
name = "serde_repr" name = "serde_repr"
version = "0.1.18" version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -1487,9 +1487,9 @@ dependencies = [
[[package]] [[package]]
name = "signal-hook-registry" name = "signal-hook-registry"
version = "1.4.1" version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@ -1586,9 +1586,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.58" version = "2.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1632,9 +1632,9 @@ dependencies = [
[[package]] [[package]]
name = "thirtyfour-macros" name = "thirtyfour-macros"
version = "0.1.1" version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cae91d1c7c61ec65817f1064954640ee350a50ae6548ff9a1bdd2489d6ffbb0" checksum = "67c98f6ff7045a00ce7ef2fb2f5ebd5c3c6dfe8fc0c1858249e32555fa8059df"
dependencies = [ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
@ -1644,22 +1644,22 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.58" version = "1.0.59"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "1.0.58" version = "1.0.59"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -1674,9 +1674,9 @@ dependencies = [
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.34" version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [ dependencies = [
"deranged", "deranged",
"itoa", "itoa",
@ -1695,9 +1695,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]] [[package]]
name = "time-macros" name = "time-macros"
version = "0.2.17" version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [ dependencies = [
"num-conv", "num-conv",
"time-core", "time-core",
@ -1745,7 +1745,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -1784,7 +1784,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]
[[package]] [[package]]
@ -1831,7 +1831,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]] [[package]]
name = "tswn" name = "tswn"
version = "0.1.1" version = "0.1.5"
dependencies = [ dependencies = [
"base16384", "base16384",
"chrono", "chrono",
@ -1839,6 +1839,7 @@ dependencies = [
"colored", "colored",
"tracing", "tracing",
"tracing-subscriber", "tracing-subscriber",
"windows-sys 0.48.0",
] ]
[[package]] [[package]]
@ -1963,7 +1964,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -1997,7 +1998,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -2049,9 +2050,9 @@ dependencies = [
[[package]] [[package]]
name = "wgpu" name = "wgpu"
version = "0.19.3" version = "0.19.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4b1213b52478a7631d6e387543ed8f642bc02c578ef4e3b49aca2a29a7df0cb" checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"cfg-if", "cfg-if",
@ -2074,9 +2075,9 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-core" name = "wgpu-core"
version = "0.19.3" version = "0.19.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9f6b033c2f00ae0bc8ea872c5989777c60bc241aac4e58b24774faa8b391f78" checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"bit-vec", "bit-vec",
@ -2100,9 +2101,9 @@ dependencies = [
[[package]] [[package]]
name = "wgpu-hal" name = "wgpu-hal"
version = "0.19.3" version = "0.19.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f972c280505ab52ffe17e94a7413d9d54b58af0114ab226b9fc4999a47082e" checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3"
dependencies = [ dependencies = [
"android_system_properties", "android_system_properties",
"arrayvec", "arrayvec",
@ -2192,11 +2193,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]] [[package]]
name = "winapi-util" name = "winapi-util"
version = "0.1.6" version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
dependencies = [ dependencies = [
"winapi", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -2212,7 +2213,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [ dependencies = [
"windows-core", "windows-core",
"windows-targets 0.52.4", "windows-targets 0.52.5",
] ]
[[package]] [[package]]
@ -2221,7 +2222,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [ dependencies = [
"windows-targets 0.52.4", "windows-targets 0.52.5",
] ]
[[package]] [[package]]
@ -2239,7 +2240,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [ dependencies = [
"windows-targets 0.52.4", "windows-targets 0.52.5",
] ]
[[package]] [[package]]
@ -2259,17 +2260,18 @@ dependencies = [
[[package]] [[package]]
name = "windows-targets" name = "windows-targets"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
dependencies = [ dependencies = [
"windows_aarch64_gnullvm 0.52.4", "windows_aarch64_gnullvm 0.52.5",
"windows_aarch64_msvc 0.52.4", "windows_aarch64_msvc 0.52.5",
"windows_i686_gnu 0.52.4", "windows_i686_gnu 0.52.5",
"windows_i686_msvc 0.52.4", "windows_i686_gnullvm",
"windows_x86_64_gnu 0.52.4", "windows_i686_msvc 0.52.5",
"windows_x86_64_gnullvm 0.52.4", "windows_x86_64_gnu 0.52.5",
"windows_x86_64_msvc 0.52.4", "windows_x86_64_gnullvm 0.52.5",
"windows_x86_64_msvc 0.52.5",
] ]
[[package]] [[package]]
@ -2280,9 +2282,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]] [[package]]
name = "windows_aarch64_gnullvm" name = "windows_aarch64_gnullvm"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
@ -2292,9 +2294,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
@ -2304,9 +2306,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
@ -2316,9 +2324,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
@ -2328,9 +2336,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
[[package]] [[package]]
name = "windows_x86_64_gnullvm" name = "windows_x86_64_gnullvm"
@ -2340,9 +2348,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]] [[package]]
name = "windows_x86_64_gnullvm" name = "windows_x86_64_gnullvm"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
@ -2352,9 +2360,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
version = "0.52.4" version = "0.52.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
[[package]] [[package]]
name = "xml-rs" name = "xml-rs"
@ -2379,5 +2387,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.58", "syn 2.0.60",
] ]

76
bench/tswn.md Normal file
View File

@ -0,0 +1,76 @@
# tswn 效率记录
## 0.1.1
> 445E/d
```text
2024-04-25T14:38:37.928073Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_22-38-37.txt"
2024-04-25T14:38:37.928448Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T14:38:37.928527Z INFO tswn: 线程数: 1
2024-04-25T14:38:37.928582Z INFO tswn: 八围预期: 640
2024-04-25T14:38:37.928633Z INFO tswn: 队伍名: shenjacks
2024-04-25T14:38:37.928689Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-25_22-38-37.txt"
2024-04-25T14:38:37.928773Z INFO tswn: 开始计算
2024-04-25T14:38:37.928857Z INFO tswn: 线程 thread_0 开始计算
2024-04-25T14:38:37.947371Z INFO tswn::cacluate: | 1|Id: 10000|542408.18/s 468.641E/d 0.02⬆️|0 |预计:0:3:4|
2024-04-25T14:38:48.111355Z INFO tswn::cacluate: | 1|Id: 5434080|533663.84/s 461.086E/d 10.16⬇️|0 |预计:0:2:57|
2024-04-25T14:38:58.566294Z INFO tswn::cacluate: | 1|Id: 10770710|510448.33/s 441.027E/d 10.45⬇️|0 |预计:0:2:54|
2024-04-25T14:39:08.419676Z INFO tswn::cacluate: | 1|Id: 15875190|518062.38/s 447.606E/d 9.85⬆️|0 |预计:0:2:42|
2024-04-25T14:39:18.371574Z INFO tswn::cacluate: | 1|Id: 21055810|520575.43/s 449.777E/d 9.95⬆️|0 |预计:0:2:31|
2024-04-25T14:39:28.277127Z INFO tswn::cacluate: | 1|Id: 26261560|525550.00/s 454.075E/d 9.91⬆️|0 |预计:0:2:20|
2024-04-25T14:39:38.073338Z INFO tswn::cacluate: | 1|Id: 31517060|536495.12/s 463.532E/d 9.80⬆️|0 |预计:0:2:7|
2024-04-25T14:39:48.224642Z INFO tswn::cacluate: | 1|Id: 36882010|528507.78/s 456.631E/d 10.15⬇️|0 |预计:0:1:59|
```
## 0.1.2
> 478E/d
```text
2024-04-25T14:49:18.046424Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_22-49-18.txt"
2024-04-25T14:49:18.046647Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T14:49:18.046739Z INFO tswn: 线程数: 1
2024-04-25T14:49:18.046814Z INFO tswn: 八围预期: 640
2024-04-25T14:49:18.046888Z INFO tswn: 队伍名: shenjacks
2024-04-25T14:49:18.046961Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-25_22-49-18.txt"
2024-04-25T14:49:18.047072Z INFO tswn: 开始计算
2024-04-25T14:49:18.047205Z INFO tswn: 线程 thread_0 开始计算
2024-04-25T14:49:18.067274Z INFO tswn::cacluate: | 1|Id: 10000|500668.39/s 432.577E/d 0.02⬆️|0 |预计:0:3:19|
2024-04-25T14:49:26.959820Z INFO tswn::cacluate: | 1|Id: 5016680|563031.98/s 486.460E/d 8.89⬆️|0 |预计:0:2:48|
2024-04-25T14:49:37.050652Z INFO tswn::cacluate: | 1|Id: 10646990|557974.03/s 482.090E/d 10.09⬇️|0 |预计:0:2:40|
2024-04-25T14:49:47.117235Z INFO tswn::cacluate: | 1|Id: 16226730|554294.40/s 478.910E/d 10.07⬇️|0 |预计:0:2:31|
2024-04-25T14:49:57.134571Z INFO tswn::cacluate: | 1|Id: 21769670|553354.55/s 478.098E/d 10.02⬇️|0 |预计:0:2:21|
2024-04-25T14:50:07.084869Z INFO tswn::cacluate: | 1|Id: 27303210|556126.12/s 480.493E/d 9.95⬆️|0 |预计:0:2:10|
2024-04-25T14:50:17.165308Z INFO tswn::cacluate: | 1|Id: 32864470|551717.27/s 476.684E/d 10.08⬇️|0 |预计:0:2:1|
2024-04-25T14:50:27.177012Z INFO tswn::cacluate: | 1|Id: 38381640|551097.33/s 476.148E/d 10.01⬇️|0 |预计:0:1:51|
2024-04-25T14:50:37.102177Z INFO tswn::cacluate: | 1|Id: 43892610|555281.37/s 479.763E/d 9.92⬆️|0 |预计:0:1:41|
2024-04-25T14:50:47.147717Z INFO tswn::cacluate: | 1|Id: 49445420|552772.98/s 477.596E/d 10.05⬇️|0 |预计:0:1:31|
2024-04-25T14:50:57.108934Z INFO tswn::cacluate: | 1|Id: 54973140|554932.97/s 479.462E/d 9.96⬆️|0 |预计:0:1:21|
```
## 0.1.3
> 550E/d
```text
2024-04-25T15:02:14.455532Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-25_23-02-14.txt"
2024-04-25T15:02:14.455701Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T15:02:14.455757Z INFO tswn: 线程数: 1
2024-04-25T15:02:14.455806Z INFO tswn: 八围预期: 640
2024-04-25T15:02:14.455853Z INFO tswn: 队伍名: shenjacks
2024-04-25T15:02:14.455899Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-25_23-02-14.txt"
2024-04-25T15:02:14.455979Z INFO tswn: 开始计算
2024-04-25T15:02:14.456032Z INFO tswn: 线程 thread_0 开始计算
2024-04-25T15:02:14.471838Z INFO tswn::cacluate: | 1|Id: 10000|635833.00/s 549.360E/d 0.02⬆️|0 |预计:0:2:37|
2024-04-25T15:02:24.556257Z INFO tswn::cacluate: | 1|Id: 6368330|630517.99/s 544.768E/d 10.08⬇️|0 |预计:0:2:28|
2024-04-25T15:02:34.374117Z INFO tswn::cacluate: | 1|Id: 12673500|642224.18/s 554.882E/d 9.82⬆️|0 |预计:0:2:15|
2024-04-25T15:02:44.419013Z INFO tswn::cacluate: | 1|Id: 19095740|639400.29/s 552.442E/d 10.04⬇️|0 |预计:0:2:6|
2024-04-25T15:02:54.349142Z INFO tswn::cacluate: | 1|Id: 25489740|643910.74/s 556.339E/d 9.93⬆️|0 |预计:0:1:55|
2024-04-25T15:03:04.362691Z INFO tswn::cacluate: | 1|Id: 31928840|643051.51/s 555.597E/d 10.01⬇️|0 |预计:0:1:45|
2024-04-25T15:03:14.336906Z INFO tswn::cacluate: | 1|Id: 38359350|644727.96/s 557.045E/d 9.97⬆️|0 |预计:0:1:35|
2024-04-25T15:03:24.423038Z INFO tswn::cacluate: | 1|Id: 44806620|639233.80/s 552.298E/d 10.09⬇️|0 |预计:0:1:26|
2024-04-25T15:03:34.344623Z INFO tswn::cacluate: | 1|Id: 51198950|644297.20/s 556.673E/d 9.92⬆️|0 |预计:0:1:15|
2024-04-25T15:03:44.331352Z INFO tswn::cacluate: | 1|Id: 57641920|645164.91/s 557.422E/d 9.99⬆️|0 |预计:0:1:5|
2024-04-25T15:03:54.332496Z INFO tswn::cacluate: | 1|Id: 64093560|645118.80/s 557.383E/d 10.00⬇️|0 |预计:0:0:55|
```

View File

@ -1,20 +1,29 @@
[package] [package]
name = "tswn" name = "tswn"
description = "tool shenjack work shop namerena" description = "tool shenjack work shop namerena"
version = "0.1.1" version = "0.1.5"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
clap = { version = "4.5.1", features = ["derive"] } clap = { version = "4.5.4", features = ["derive"] }
base16384 = "0.1.0" base16384 = "0.1.0"
tracing = "0.1.40" tracing = "0.1.40"
tracing-subscriber = { version = "0.3.18", features = ["time"] } tracing-subscriber = { version = "0.3.18", features = ["time"] }
chrono = "0.4.34" chrono = "0.4"
colored = "2.1.0" colored = "2.1.0"
# windows 下额外指定一个 windows 依赖 (微软赛高!)
# 用于在 bench 状态下指定核心(就是闲得)
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "*", features = [
"Win32_Foundation",
"Win32_System_Threading",
] }
[features] [features]
default = ["simd"] default = ["simd"]
simd = [] simd = []

1
miner/docs/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
runs

169
miner/docs/bench.md Normal file
View File

@ -0,0 +1,169 @@
# tswn (miner bench)
## 方法
> --release
`--team shenjacks -q 5500 --end 100000000 --bench`
环境
> 5600x 4.3GHz
## 结果
### 0.1.5
> 要命
>
> 不过至少榨干了
>
> 虚评还没榨干呢就是了
```text
.\runs\tswn-015.exe --team shenjacks -q 5500 --end 100000000 --bench
2024-04-25T16:57:24.563330Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-26_00-57-24.txt"
2024-04-25T16:57:24.563545Z INFO tswn: 设置线程亲和性成功 4095
2024-04-25T16:57:24.563599Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T16:57:24.563647Z INFO tswn: 线程数: 1
2024-04-25T16:57:24.563699Z INFO tswn: 八围预期: 640
2024-04-25T16:57:24.563743Z INFO tswn: 队伍名: shenjacks
2024-04-25T16:57:24.563785Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-26_00-57-24.txt"
2024-04-25T16:57:24.563829Z INFO tswn: 预期状态输出时间间隔: 10 秒
2024-04-25T16:57:24.563879Z INFO tswn: 是否启动 benchmark 模式: true
2024-04-25T16:57:24.563922Z INFO tswn: 开始 benchmark
2024-04-25T16:57:24.578851Z INFO tswn::cacluate: | 1|Id: 10000|671821.78/s 580.454E/d 0.01⬆️|0 |预计:0:2:28|
2024-04-25T16:57:34.578359Z INFO tswn::cacluate: | 1|Id: 6728210|671860.35/s 580.487E/d 10.00⬆️|0 |预计:0:2:18|
2024-04-25T16:57:44.575895Z INFO tswn::cacluate: | 1|Id: 13446810|672032.96/s 580.636E/d 10.00⬆️|0 |预计:0:2:8|
2024-04-25T16:57:54.591460Z INFO tswn::cacluate: | 1|Id: 20167130|670995.58/s 579.740E/d 10.02⬇️|0 |预计:0:1:58|
2024-04-25T16:58:04.566468Z INFO tswn::cacluate: | 1|Id: 26877080|672683.34/s 581.198E/d 9.97⬆️|0 |预计:0:1:48|
2024-04-25T16:58:14.569120Z INFO tswn::cacluate: | 1|Id: 33603910|672512.54/s 581.051E/d 10.00⬇️|0 |预计:0:1:38|
2024-04-25T16:58:24.568515Z INFO tswn::cacluate: | 1|Id: 40329030|672560.85/s 581.093E/d 10.00⬆️|0 |预计:0:1:28|
2024-04-25T16:58:34.568901Z INFO tswn::cacluate: | 1|Id: 47054630|672541.67/s 581.076E/d 10.00⬇️|0 |预计:0:1:18|
2024-04-25T16:58:44.567734Z INFO tswn::cacluate: | 1|Id: 53780040|672627.21/s 581.150E/d 10.00⬆️|0 |预计:0:1:8|
2024-04-25T16:58:54.566817Z INFO tswn::cacluate: | 1|Id: 60506310|672696.30/s 581.210E/d 10.00⬆️|0 |预计:0:0:58|
2024-04-25T16:59:04.552976Z INFO tswn::cacluate: | 1|Id: 67233270|673636.33/s 582.022E/d 9.99⬆️|0 |预计:0:0:48|
2024-04-25T16:59:14.573063Z INFO tswn::cacluate: | 1|Id: 73969630|672293.31/s 580.861E/d 10.02⬇️|0 |预计:0:0:38|
```
### 0.1.4
> 说啥来啥
```text
.\runs\tswn-014.exe --team shenjacks -q 5500 --end 100000000 --bench
2024-04-25T16:41:01.955880Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-26_00-41-01.txt"
2024-04-25T16:41:01.956097Z INFO tswn: 设置线程亲和性成功 4095
2024-04-25T16:41:01.956149Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T16:41:01.956194Z INFO tswn: 线程数: 1
2024-04-25T16:41:01.956238Z INFO tswn: 八围预期: 640
2024-04-25T16:41:01.956281Z INFO tswn: 队伍名: shenjacks
2024-04-25T16:41:01.956324Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-26_00-41-01.txt"
2024-04-25T16:41:01.956368Z INFO tswn: 预期状态输出时间间隔: 10 秒
2024-04-25T16:41:01.956414Z INFO tswn: 是否启动 benchmark 模式: true
2024-04-25T16:41:01.956460Z INFO tswn: 开始 benchmark
2024-04-25T16:41:01.971405Z INFO tswn::cacluate: | 1|Id: 10000|671839.83/s 580.470E/d 0.01⬆️|0 |预计:0:2:28|
2024-04-25T16:41:11.993331Z INFO tswn::cacluate: | 1|Id: 6728390|670375.96/s 579.205E/d 10.02⬇️|0 |预计:0:2:19|
2024-04-25T16:41:21.985595Z INFO tswn::cacluate: | 1|Id: 13432140|670904.21/s 579.661E/d 9.99⬆️|0 |预计:0:2:9|
2024-04-25T16:41:32.000630Z INFO tswn::cacluate: | 1|Id: 20141180|669903.99/s 578.797E/d 10.01⬇️|0 |预计:0:1:59|
2024-04-25T16:41:41.977727Z INFO tswn::cacluate: | 1|Id: 26840210|671448.43/s 580.131E/d 9.98⬆️|0 |预计:0:1:48|
2024-04-25T16:41:51.971939Z INFO tswn::cacluate: | 1|Id: 33554690|671844.32/s 580.473E/d 9.99⬆️|0 |预计:0:1:38|
2024-04-25T16:42:01.998885Z INFO tswn::cacluate: | 1|Id: 40273130|670045.99/s 578.920E/d 10.03⬇️|0 |预计:0:1:29|
2024-04-25T16:42:11.987622Z INFO tswn::cacluate: | 1|Id: 46973580|670807.82/s 579.578E/d 9.99⬆️|0 |预计:0:1:19|
2024-04-25T16:42:21.991526Z INFO tswn::cacluate: | 1|Id: 53681650|670555.81/s 579.360E/d 10.00⬇️|0 |预计:0:1:9|
2024-04-25T16:42:31.964748Z INFO tswn::cacluate: | 1|Id: 60387200|672365.87/s 580.924E/d 9.97⬆️|0 |预计:0:0:58|
2024-04-25T16:42:41.948492Z INFO tswn::cacluate: | 1|Id: 67110850|673467.34/s 581.876E/d 9.98⬆️|0 |预计:0:0:48|
2024-04-25T16:42:51.961452Z INFO tswn::cacluate: | 1|Id: 73845520|672602.58/s 581.129E/d 10.01⬇️|0 |预计:0:0:38|
2024-04-25T16:43:01.963617Z INFO tswn::cacluate: | 1|Id: 80571540|672464.08/s 581.009E/d 10.00⬇️|0 |预计:0:0:28|
2024-04-25T16:43:11.971626Z INFO tswn::cacluate: | 1|Id: 87296180|671933.03/s 580.550E/d 10.01⬇️|0 |预计:0:0:18|
```
### 0.1.3
> 可算至少没有如升了
```text
.\runs\tswn-013.exe --team shenjacks -q 5500 --end 100000000 --bench
2024-04-25T16:34:48.083060Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-26_00-34-48.txt"
2024-04-25T16:34:48.083292Z INFO tswn: 设置线程亲和性成功 4095
2024-04-25T16:34:48.083349Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T16:34:48.083397Z INFO tswn: 线程数: 1
2024-04-25T16:34:48.083441Z INFO tswn: 八围预期: 640
2024-04-25T16:34:48.083485Z INFO tswn: 队伍名: shenjacks
2024-04-25T16:34:48.083528Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-26_00-34-48.txt"
2024-04-25T16:34:48.083582Z INFO tswn: 预期状态输出时间间隔: 10 秒
2024-04-25T16:34:48.083630Z INFO tswn: 是否启动 benchmark 模式: true
2024-04-25T16:34:48.083675Z INFO tswn: 开始 benchmark
2024-04-25T16:34:48.098900Z INFO tswn::cacluate: | 1|Id: 10000|658761.53/s 569.170E/d 0.02⬆️|0 |预计:0:2:31|
2024-04-25T16:34:57.961474Z INFO tswn::cacluate: | 1|Id: 6597610|667946.59/s 577.106E/d 9.86⬆️|0 |预计:0:2:19|
2024-04-25T16:35:07.951406Z INFO tswn::cacluate: | 1|Id: 13277070|668626.78/s 577.694E/d 9.99⬆️|0 |预计:0:2:9|
2024-04-25T16:35:17.945802Z INFO tswn::cacluate: | 1|Id: 19963330|669008.84/s 578.024E/d 9.99⬆️|0 |预计:0:1:59|
2024-04-25T16:35:27.954792Z INFO tswn::cacluate: | 1|Id: 26653410|668414.35/s 577.510E/d 10.01⬇️|0 |预计:0:1:49|
2024-04-25T16:35:37.947746Z INFO tswn::cacluate: | 1|Id: 33337550|668892.23/s 577.923E/d 9.99⬆️|0 |预计:0:1:39|
2024-04-25T16:35:47.938790Z INFO tswn::cacluate: | 1|Id: 40026470|669498.85/s 578.447E/d 9.99⬆️|0 |预计:0:1:29|
2024-04-25T16:35:57.982945Z INFO tswn::cacluate: | 1|Id: 46721450|666561.93/s 575.910E/d 10.04⬇️|0 |预计:0:1:19|
2024-04-25T16:36:07.959973Z INFO tswn::cacluate: | 1|Id: 53387060|668105.84/s 577.243E/d 9.98⬆️|0 |预计:0:1:9|
2024-04-25T16:36:17.936227Z INFO tswn::cacluate: | 1|Id: 60068110|669702.86/s 578.623E/d 9.98⬆️|0 |预计:0:0:59|
2024-04-25T16:36:27.934845Z INFO tswn::cacluate: | 1|Id: 66765130|669801.76/s 578.709E/d 10.00⬆️|0 |预计:0:0:49|
```
### 0.1.2
> 咋到了这边就如改呢
```text
.\runs\tswn-012.exe --team shenjacks -q 5500 --end 100000000 --bench
2024-04-25T16:29:10.751123Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-26_00-29-10.txt"
2024-04-25T16:29:10.751340Z INFO tswn: 设置线程亲和性成功 4095
2024-04-25T16:29:10.751392Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T16:29:10.751437Z INFO tswn: 线程数: 1
2024-04-25T16:29:10.751481Z INFO tswn: 八围预期: 640
2024-04-25T16:29:10.751525Z INFO tswn: 队伍名: shenjacks
2024-04-25T16:29:10.751569Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-26_00-29-10.txt"
2024-04-25T16:29:10.751616Z INFO tswn: 预期状态输出时间间隔: 10 秒
2024-04-25T16:29:10.751663Z INFO tswn: 是否启动 benchmark 模式: true
2024-04-25T16:29:10.751706Z INFO tswn: 开始 benchmark
2024-04-25T16:29:10.769613Z INFO tswn::cacluate: | 1|Id: 10000|559869.66/s 483.727E/d 0.02⬆️|0 |预计:0:2:58|
2024-04-25T16:29:20.792120Z INFO tswn::cacluate: | 1|Id: 5608690|558618.22/s 482.646E/d 10.02⬇️|0 |预计:0:2:48|
2024-04-25T16:29:30.783691Z INFO tswn::cacluate: | 1|Id: 11194870|559095.37/s 483.058E/d 9.99⬆️|0 |预计:0:2:38|
2024-04-25T16:29:40.782174Z INFO tswn::cacluate: | 1|Id: 16785820|559186.84/s 483.137E/d 10.00⬆️|0 |预计:0:2:28|
2024-04-25T16:29:50.778334Z INFO tswn::cacluate: | 1|Id: 22377680|559406.94/s 483.328E/d 10.00⬆️|0 |预计:0:2:18|
2024-04-25T16:30:00.784518Z INFO tswn::cacluate: | 1|Id: 27971740|559066.52/s 483.033E/d 10.01⬇️|0 |预计:0:2:8|
2024-04-25T16:30:10.782641Z INFO tswn::cacluate: | 1|Id: 33562400|559177.10/s 483.129E/d 10.00⬆️|0 |预计:0:1:58|
2024-04-25T16:30:20.780848Z INFO tswn::cacluate: | 1|Id: 39154170|559283.24/s 483.221E/d 10.00⬆️|0 |预计:0:1:48|
2024-04-25T16:30:30.780561Z INFO tswn::cacluate: | 1|Id: 44747000|559305.48/s 483.240E/d 10.00⬆️|0 |预计:0:1:38|
2024-04-25T16:30:40.788376Z INFO tswn::cacluate: | 1|Id: 50340050|558874.38/s 482.867E/d 10.01⬇️|0 |预计:0:1:28|
2024-04-25T16:30:50.781088Z INFO tswn::cacluate: | 1|Id: 55928790|559287.46/s 483.224E/d 9.99⬆️|0 |预计:0:1:18|
2024-04-25T16:31:00.787130Z INFO tswn::cacluate: | 1|Id: 61521660|558955.19/s 482.937E/d 10.01⬇️|0 |预计:0:1:8|
2024-04-25T16:31:10.774828Z INFO tswn::cacluate: | 1|Id: 67111210|559649.42/s 483.537E/d 9.99⬆️|0 |预计:0:0:58|
2024-04-25T16:31:20.780385Z INFO tswn::cacluate: | 1|Id: 72707700|559344.17/s 483.273E/d 10.01⬇️|0 |预计:0:0:48|
2024-04-25T16:31:30.789669Z INFO tswn::cacluate: | 1|Id: 78301140|558831.29/s 482.830E/d 10.01⬇️|0 |预计:0:0:38|
2024-04-25T16:31:40.769888Z INFO tswn::cacluate: | 1|Id: 83889450|559944.67/s 483.792E/d 9.98⬆️|0 |预计:0:0:28|
2024-04-25T16:31:50.780890Z INFO tswn::cacluate: | 1|Id: 89488890|559334.72/s 483.265E/d 10.01⬇️|0 |预计:0:0:18|
```
### 0.1.1
```text
.\runs\tswn-011.exe --team shenjacks -q 5500 --end 100000000 --bench
2024-04-25T16:22:43.103952Z INFO tswn: 输出文件: "./namerena/namerena-shenjacks-2024-04-26_00-22-43.txt"
2024-04-25T16:22:43.104169Z INFO tswn: 设置线程亲和性成功 4095
2024-04-25T16:22:43.104223Z INFO tswn: 开始: 0 结尾: 100000000
2024-04-25T16:22:43.104270Z INFO tswn: 线程数: 1
2024-04-25T16:22:43.104313Z INFO tswn: 八围预期: 640
2024-04-25T16:22:43.104357Z INFO tswn: 队伍名: shenjacks
2024-04-25T16:22:43.104401Z INFO tswn: 输出文件名: "./namerena/namerena-shenjacks-2024-04-26_00-22-43.txt"
2024-04-25T16:22:43.104445Z INFO tswn: 预期状态输出时间间隔: 10 秒
2024-04-25T16:22:43.104494Z INFO tswn: 是否启动 benchmark 模式: true
2024-04-25T16:22:43.104539Z INFO tswn: 开始 benchmark
2024-04-25T16:22:43.122617Z INFO tswn::cacluate: | 1|Id: 10000|554545.05/s 479.127E/d 0.02⬆️|0 |预计:0:3:0|
2024-04-25T16:22:53.036437Z INFO tswn::cacluate: | 1|Id: 5555450|559371.31/s 483.297E/d 9.91⬆️|0 |预计:0:2:48|
2024-04-25T16:23:03.037739Z INFO tswn::cacluate: | 1|Id: 11149160|559304.37/s 483.239E/d 10.00⬇️|0 |预计:0:2:38|
2024-04-25T16:23:13.057818Z INFO tswn::cacluate: | 1|Id: 16742200|558189.62/s 482.276E/d 10.02⬇️|0 |预计:0:2:29|
2024-04-25T16:23:23.030494Z INFO tswn::cacluate: | 1|Id: 22324090|559724.72/s 483.602E/d 9.97⬆️|0 |预计:0:2:18|
2024-04-25T16:23:33.049657Z INFO tswn::cacluate: | 1|Id: 27921330|558661.02/s 482.683E/d 10.02⬇️|0 |预计:0:2:9|
2024-04-25T16:23:43.043393Z INFO tswn::cacluate: | 1|Id: 33507940|559017.44/s 482.991E/d 9.99⬆️|0 |预计:0:1:58|
2024-04-25T16:23:53.050200Z INFO tswn::cacluate: | 1|Id: 39098110|558643.05/s 482.668E/d 10.01⬇️|0 |预计:0:1:49|
2024-04-25T16:24:03.037297Z INFO tswn::cacluate: | 1|Id: 44684540|559371.02/s 483.297E/d 9.99⬆️|0 |预计:0:1:38|
2024-04-25T16:24:13.028762Z INFO tswn::cacluate: | 1|Id: 50278250|559855.15/s 483.715E/d 9.99⬆️|0 |预计:0:1:28|
```

View File

@ -36,6 +36,11 @@ pub struct Command {
/// 预期状态输出时间间隔 (秒) /// 预期状态输出时间间隔 (秒)
#[arg(long, short = 'r', default_value_t = 10)] #[arg(long, short = 'r', default_value_t = 10)]
pub report_interval: u64, pub report_interval: u64,
/// 是否启动 benchmark 模式
///
/// Windows 下会强制单线程, 且设置线程亲和性为核心 0
#[arg(long = "bench", default_value_t = false)]
pub bench: bool,
} }
impl Command { impl Command {
@ -60,7 +65,6 @@ fn main() {
let left = cli_arg.start % cli_arg.thread_count as u64; let left = cli_arg.start % cli_arg.thread_count as u64;
cli_arg.end = cli_arg.end.wrapping_add(left); cli_arg.end = cli_arg.end.wrapping_add(left);
let mut n = 0;
let mut threads = Vec::with_capacity(cli_arg.thread_count as usize); let mut threads = Vec::with_capacity(cli_arg.thread_count as usize);
let now = chrono::Local::now().format("%Y-%m-%d_%H-%M-%S").to_string(); let now = chrono::Local::now().format("%Y-%m-%d_%H-%M-%S").to_string();
// namerena-<team>-<time>.txt // namerena-<team>-<time>.txt
@ -73,22 +77,46 @@ fn main() {
warn!("创建文件夹失败: {}", e); warn!("创建文件夹失败: {}", e);
} }
if cli_arg.bench {
cli_arg.thread_count = 1;
#[cfg(windows)]
unsafe {
use windows_sys::Win32::System::Threading::{GetCurrentThread, SetThreadAffinityMask};
let thread_id = GetCurrentThread();
let core_mask = 0x02;
match SetThreadAffinityMask(thread_id, core_mask) {
0 => warn!("设置线程亲和性失败 {}", std::io::Error::last_os_error()),
x => info!("设置线程亲和性成功 {}", x),
}
}
}
info!("开始: {} 结尾: {}", cli_arg.start, cli_arg.end); info!("开始: {} 结尾: {}", cli_arg.start, cli_arg.end);
info!("线程数: {}", cli_arg.thread_count); info!("线程数: {}", cli_arg.thread_count);
info!("八围预期: {}", cli_arg.prop_expect); info!("八围预期: {}", cli_arg.prop_expect);
info!("队伍名: {}", cli_arg.team); info!("队伍名: {}", cli_arg.team);
info!("输出文件名: {:?}", out_path); info!("输出文件名: {:?}", out_path);
info!("预期状态输出时间间隔: {} 秒", cli_arg.report_interval);
info!("是否启动 benchmark 模式: {}", cli_arg.bench);
for i in 0..cli_arg.thread_count { if cli_arg.bench {
n += 1; info!("开始 benchmark");
let config = cli_arg.as_cacl_config(); let config = cli_arg.as_cacl_config();
let out_path = out_path.clone(); cacluate::cacl(config, 1, &out_path);
let thread_name = format!("thread_{}", i); } else {
threads.push(std::thread::spawn(move || { let mut n = 0;
info!("线程 {} 开始计算", thread_name); for i in 0..cli_arg.thread_count {
cacluate::cacl(config, n, &out_path); n += 1;
info!("线程 {} 结束计算", thread_name); let config = cli_arg.as_cacl_config();
})); let out_path = out_path.clone();
let thread_name = format!("thread_{}", i);
threads.push(std::thread::spawn(move || {
info!("线程 {} 开始计算", thread_name);
cacluate::cacl(config, n, &out_path);
info!("线程 {} 结束计算", thread_name);
}));
}
} }
info!("开始计算"); info!("开始计算");

View File

@ -138,13 +138,15 @@ impl Namer {
let b_name_len = name_len + 1; let b_name_len = name_len + 1;
for _ in 0..2 { for _ in 0..2 {
let mut s = 0_u8; let mut s = 0_u8;
unsafe { val.swap_unchecked(s as usize, 0) }; unsafe {
let mut k = 0; val.swap_unchecked(s as usize, 0);
for i in 0..256 { let mut k = 0;
s = s.wrapping_add(if k == 0 { 0 } else { name_bytes[k - 1] }); for i in 0..256 {
s = s.wrapping_add(val[i]); s = s.wrapping_add(if k == 0 { 0 } else { *name_bytes.get_unchecked(k - 1) });
unsafe { val.swap_unchecked(i, s as usize) } s = s.wrapping_add(val[i]);
k = if k == b_name_len - 1 { 0 } else { k + 1 }; val.swap_unchecked(i, s as usize);
k = if k == b_name_len - 1 { 0 } else { k + 1 };
}
} }
} }
// simd 优化 // simd 优化
@ -158,25 +160,27 @@ impl Namer {
for i in (0..256).step_by(64) { for i in (0..256).step_by(64) {
// 一次性加载64个数字 // 一次性加载64个数字
let mut x = u8x64::from_slice(&simd_val[i..]); let mut x = u8x64::from_slice(unsafe { simd_val.get_unchecked(i..) });
x = x * simd_181 + simd_160; x = x * simd_181 + simd_160;
// 写入到 simd_val // 写入到 simd_val
x.copy_to_slice(&mut simd_val[i..]); unsafe {
x.copy_to_slice(simd_val.get_unchecked_mut(i..));
}
let y = x & simd_63; let y = x & simd_63;
y.copy_to_slice(&mut simd_val_b[i..]); unsafe {
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
}
} }
let mut mod_count = 0; let mut mod_count = 0;
for i in 0..96 { for i in 0..96 {
if simd_val[i] > 88 && simd_val[i] < 217 { unsafe {
// name_base[mod_count as usize] = simd_val_b[i]; if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
unsafe { *name_base.get_unchecked_mut(mod_count as usize) = *simd_val_b.get_unchecked(i);
*name_base.get_unchecked_mut(mod_count as usize) = mod_count += 1;
*simd_val_b.get_unchecked(i);
} }
mod_count += 1;
} }
if mod_count > 30 { if mod_count > 30 {
break; break;
@ -184,13 +188,11 @@ impl Namer {
} }
if mod_count < 31 { if mod_count < 31 {
for i in 96..256 { for i in 96..256 {
if simd_val[i] > 88 && simd_val[i] < 217 { unsafe {
// name_base[mod_count as usize] = simd_val_b[i]; if simd_val.get_unchecked(i) > &88 && simd_val.get_unchecked(i) < &217 {
unsafe { *name_base.get_unchecked_mut(mod_count as usize) = *simd_val_b.get_unchecked(i);
*name_base.get_unchecked_mut(mod_count as usize) = mod_count += 1;
*simd_val_b.get_unchecked(i);
} }
mod_count += 1;
} }
if mod_count > 30 { if mod_count > 30 {
break; break;
@ -212,20 +214,31 @@ impl Namer {
} }
// 计算 name_prop // 计算 name_prop
let mut prop_name = name_base[0..32].to_vec(); // let mut prop_name = name_base[0..32].to_vec();
prop_name[0..10].sort_unstable(); // prop_name[0..10].sort_unstable();
name_prop[0] = 154 // name_prop[0] = 154
+ prop_name[3] as u32 // + prop_name[3] as u32
+ prop_name[4] as u32 // + prop_name[4] as u32
+ prop_name[5] as u32 // + prop_name[5] as u32
+ prop_name[6] as u32; // + prop_name[6] as u32;
name_prop[1] = median(prop_name[10], prop_name[11], prop_name[12]) as u32 + 36; // name_prop[1] = median(prop_name[10], prop_name[11], prop_name[12]) as u32 + 36;
name_prop[2] = median(prop_name[13], prop_name[14], prop_name[15]) as u32 + 36; // name_prop[2] = median(prop_name[13], prop_name[14], prop_name[15]) as u32 + 36;
name_prop[3] = median(prop_name[16], prop_name[17], prop_name[18]) as u32 + 36; // name_prop[3] = median(prop_name[16], prop_name[17], prop_name[18]) as u32 + 36;
name_prop[4] = median(prop_name[19], prop_name[20], prop_name[21]) as u32 + 36; // name_prop[4] = median(prop_name[19], prop_name[20], prop_name[21]) as u32 + 36;
name_prop[5] = median(prop_name[22], prop_name[23], prop_name[24]) as u32 + 36; // name_prop[5] = median(prop_name[22], prop_name[23], prop_name[24]) as u32 + 36;
name_prop[6] = median(prop_name[25], prop_name[26], prop_name[27]) as u32 + 36; // name_prop[6] = median(prop_name[25], prop_name[26], prop_name[27]) as u32 + 36;
name_prop[7] = median(prop_name[28], prop_name[29], prop_name[30]) as u32 + 36; // name_prop[7] = median(prop_name[28], prop_name[29], prop_name[30]) as u32 + 36;
// 疯狂的 unsafe 优化(确信
unsafe {
let mut prop_name = [0_u8; 32];
prop_name.copy_from_slice(name_base.get_unchecked(0..32));
prop_name.get_unchecked_mut(0..10).sort_unstable();
*name_prop.get_unchecked_mut(0) = 154
+ *prop_name.get_unchecked(3) as u32
+ *prop_name.get_unchecked(4) as u32
+ *prop_name.get_unchecked(5) as u32
+ *prop_name.get_unchecked(6) as u32
}
Self { Self {
name: name.to_string(), name: name.to_string(),
@ -242,7 +255,9 @@ impl Namer {
pub fn update_skill(&mut self) { pub fn update_skill(&mut self) {
let skill_id = self.skl_id.as_mut(); let skill_id = self.skl_id.as_mut();
for i in 0..40 { for i in 0..40 {
skill_id[i] = i as u8 unsafe {
*skill_id.get_unchecked_mut(i) = i as u8;
}
} }
#[cfg(feature = "simd")] #[cfg(feature = "simd")]
@ -257,19 +272,23 @@ impl Namer {
let simd_32 = u8x64::splat(32); let simd_32 = u8x64::splat(32);
for i in (0..256).step_by(64) { for i in (0..256).step_by(64) {
let mut x = u8x64::from_slice(&simd_val[i..]); unsafe {
let mut y = u8x64::from_slice(&simd_val_b[i..]); let mut x = u8x64::from_slice(simd_val.get_unchecked(i..));
x = x * simd_181 + simd_199 & simd_128; let mut y = u8x64::from_slice(simd_val_b.get_unchecked(i..));
y = y * simd_53 & simd_63 ^ simd_32; x = x * simd_181 + simd_199 & simd_128;
x.copy_to_slice(&mut simd_val[i..]); y = y * simd_53 & simd_63 ^ simd_32;
y.copy_to_slice(&mut simd_val_b[i..]); x.copy_to_slice(simd_val.get_unchecked_mut(i..));
y.copy_to_slice(simd_val_b.get_unchecked_mut(i..));
}
} }
let mut mod_count = 0; let mut mod_count = 0;
for i in 0..256 { for i in 0..256 {
if simd_val[i] != 0 { unsafe {
self.name_base[mod_count as usize] = simd_val_b[i]; if simd_val.get_unchecked(i) != &0 {
mod_count += 1; *self.name_base.get_unchecked_mut(mod_count as usize) = *simd_val_b.get_unchecked(i);
mod_count += 1;
}
} }
} }
// const int N = 256, M = 128, K = 64, skill_cnt = 40, max_len = 25; // const int N = 256, M = 128, K = 64, skill_cnt = 40, max_len = 25;
@ -278,32 +297,38 @@ impl Namer {
let mut s: u8 = 0; let mut s: u8 = 0;
for _ in 0..2 { for _ in 0..2 {
for i in 0..40 { for i in 0..40 {
let rnd = { let rnd = unsafe {
a += 1; a += 1;
b = b.wrapping_add(self.val[a as usize]); b = b.wrapping_add(*self.val.get_unchecked(a as usize));
self.val.swap(a as usize, b as usize); self.val.swap_unchecked(a as usize, b as usize);
let u: u8 = self.val[((self.val[a as usize] as u16 let u: u8 = *self.val.get_unchecked(
+ self.val[b as usize] as u16) ((*self.val.get_unchecked(a as usize) as u16 + *self.val.get_unchecked(b as usize) as u16) & 255)
& 255) as usize]; as usize,
);
a += 1; a += 1;
b = b.wrapping_add(self.val[a as usize]); b = b.wrapping_add(*self.val.get_unchecked(a as usize));
self.val.swap(a as usize, b as usize); self.val.swap_unchecked(a as usize, b as usize);
let t = self.val[((self.val[a as usize] as u16 let t: u8 = *self.val.get_unchecked(
+ self.val[b as usize] as u16) ((*self.val.get_unchecked(a as usize) as u16 + *self.val.get_unchecked(b as usize) as u16) & 255)
& 255) as usize]; as usize,
);
(((u as u32) << 8 | t as u32) % 40) as u8 (((u as u32) << 8 | t as u32) % 40) as u8
}; };
s = (s as u16 + rnd as u16 + skill_id[i] as u16) as u8 % 40; unsafe {
skill_id.swap(i as usize, s as usize); s = (s as u16 + rnd as u16 + *skill_id.get_unchecked(i as usize) as u16) as u8 % 40;
skill_id.swap_unchecked(i as usize, s as usize);
}
} }
} }
let mut last = -1; let mut last = -1;
let mut j = 0; let mut j = 0;
for i in (64..128).step_by(4) { for i in (64..128).step_by(4) {
let p = min( let p = unsafe {
min(self.name_base[i + 0], self.name_base[i + 1]), min(
min(self.name_base[i + 2], self.name_base[i + 3]), min(*self.name_base.get_unchecked(i + 0), *self.name_base.get_unchecked(i + 1)),
); min(*self.name_base.get_unchecked(i + 2), *self.name_base.get_unchecked(i + 3)),
)
};
if p > 10 && skill_id[j] < 35 { if p > 10 && skill_id[j] < 35 {
self.skl_freq[j] = p - 10; self.skl_freq[j] = p - 10;
if skill_id[j] < 25 { if skill_id[j] < 25 {
@ -319,12 +344,10 @@ impl Namer {
// *= 2 // *= 2
} }
if (self.skl_freq[14] != 0) && (last != 14) { if (self.skl_freq[14] != 0) && (last != 14) {
self.skl_freq[14] += self.skl_freq[14] += min(min(self.name_base[60], self.name_base[61]), self.skl_freq[14]);
min(min(self.name_base[60], self.name_base[61]), self.skl_freq[14]);
} }
if (self.skl_freq[15] != 0) && (last != 15) { if (self.skl_freq[15] != 0) && (last != 15) {
self.skl_freq[15] += self.skl_freq[15] += min(min(self.name_base[62], self.name_base[63]), self.skl_freq[15]);
min(min(self.name_base[62], self.name_base[63]), self.skl_freq[15]);
} }
} }
@ -395,10 +418,9 @@ impl Namer {
let skills = { let skills = {
let mut base = "".to_string(); let mut base = "".to_string();
let skill_names = [ let skill_names = [
"火球", "冰冻", "雷击", "地裂", "吸血", "投毒", "连击", "会心", "瘟疫", "命轮", "火球", "冰冻", "雷击", "地裂", "吸血", "投毒", "连击", "会心", "瘟疫", "命轮", "狂暴", "魅惑", "加速", "减速",
"狂暴", "魅惑", "加速", "减速", "诅咒", "治愈", "苏生", "净化", "铁壁", "蓄力", "诅咒", "治愈", "苏生", "净化", "铁壁", "蓄力", "聚气", "潜行", "血祭", "分身", "幻术", "防御", "守护", "反弹",
"聚气", "潜行", "血祭", "分身", "幻术", "防御", "守护", "反弹", "护符", "护盾", "护符", "护盾", "反击", "吞噬", "亡灵", "垂死", "隐匿", "", "", "", "", "",
"反击", "吞噬", "亡灵", "垂死", "隐匿", "", "", "", "", "",
]; ];
// 后处理 // 后处理
let mut skills = [0; 40]; let mut skills = [0; 40];
@ -445,20 +467,16 @@ mod test {
let namer = Namer::new_from_team_namer_unchecked(&team, "x"); let namer = Namer::new_from_team_namer_unchecked(&team, "x");
let val_vec: Vec<u8> = vec![ let val_vec: Vec<u8> = vec![
225, 96, 49, 232, 20, 47, 115, 245, 234, 23, 111, 178, 231, 100, 118, 197, 42, 98, 137, 225, 96, 49, 232, 20, 47, 115, 245, 234, 23, 111, 178, 231, 100, 118, 197, 42, 98, 137, 196, 209, 86, 114, 184, 167,
196, 209, 86, 114, 184, 167, 129, 164, 239, 205, 211, 82, 173, 189, 153, 198, 67, 4, 3, 129, 164, 239, 205, 211, 82, 173, 189, 153, 198, 67, 4, 3, 90, 52, 128, 134, 176, 145, 85, 9, 250, 30, 63, 247, 240,
90, 52, 128, 134, 176, 145, 85, 9, 250, 30, 63, 247, 240, 17, 215, 200, 78, 188, 132, 17, 215, 200, 78, 188, 132, 117, 10, 45, 162, 79, 123, 73, 109, 91, 57, 210, 22, 175, 107, 203, 103, 32, 83, 70, 242,
117, 10, 45, 162, 79, 123, 73, 109, 91, 57, 210, 22, 175, 107, 203, 103, 32, 83, 70, 75, 220, 140, 148, 15, 138, 44, 228, 43, 105, 199, 99, 116, 97, 69, 80, 172, 230, 25, 224, 33, 31, 135, 235, 74, 193,
242, 75, 220, 140, 148, 15, 138, 44, 228, 43, 105, 199, 99, 116, 97, 69, 80, 172, 230, 238, 233, 88, 216, 204, 24, 163, 141, 6, 201, 26, 38, 21, 186, 237, 101, 206, 212, 76, 144, 219, 149, 169, 202, 110,
25, 224, 33, 31, 135, 235, 74, 193, 238, 233, 88, 216, 204, 24, 163, 141, 6, 201, 26, 41, 166, 139, 194, 168, 34, 142, 147, 187, 108, 223, 94, 5, 243, 226, 60, 40, 102, 51, 87, 61, 236, 46, 159, 64, 227,
38, 21, 186, 237, 101, 206, 212, 76, 144, 219, 149, 169, 202, 110, 41, 166, 139, 194, 113, 190, 81, 127, 65, 8, 183, 253, 150, 249, 229, 37, 156, 182, 180, 246, 124, 244, 174, 122, 89, 120, 160, 35, 143,
168, 34, 142, 147, 187, 108, 223, 94, 5, 243, 226, 60, 40, 102, 51, 87, 61, 236, 46, 11, 14, 151, 133, 27, 177, 251, 221, 207, 58, 29, 131, 119, 171, 157, 93, 185, 48, 112, 192, 191, 66, 106, 39, 59,
159, 64, 227, 113, 190, 81, 127, 65, 8, 183, 253, 150, 249, 229, 37, 156, 182, 180, 92, 19, 1, 155, 254, 84, 222, 165, 54, 121, 13, 50, 36, 130, 95, 161, 213, 170, 28, 241, 71, 53, 68, 218, 0, 252, 16,
246, 124, 244, 174, 122, 89, 120, 160, 35, 143, 11, 14, 151, 133, 27, 177, 251, 221, 136, 179, 158, 248, 2, 154, 12, 125, 126, 255, 18, 146, 104, 77, 152, 208, 214, 72, 55, 195, 62, 7, 217, 56, 181,
207, 58, 29, 131, 119, 171, 157, 93, 185, 48, 112, 192, 191, 66, 106, 39, 59, 92, 19,
1, 155, 254, 84, 222, 165, 54, 121, 13, 50, 36, 130, 95, 161, 213, 170, 28, 241, 71,
53, 68, 218, 0, 252, 16, 136, 179, 158, 248, 2, 154, 12, 125, 126, 255, 18, 146, 104,
77, 152, 208, 214, 72, 55, 195, 62, 7, 217, 56, 181,
]; ];
assert_eq!(namer.val.to_vec(), val_vec); assert_eq!(namer.val.to_vec(), val_vec);
} }
@ -468,19 +486,17 @@ mod test {
let team = TeamNamer::new_unchecked("x"); let team = TeamNamer::new_unchecked("x");
let mut namer = Namer::new_from_team_namer_unchecked(&team, "x"); let mut namer = Namer::new_from_team_namer_unchecked(&team, "x");
let base_name_vec: Vec<u8> = vec![ let base_name_vec: Vec<u8> = vec![
53, 0, 40, 4, 58, 61, 37, 46, 56, 51, 21, 20, 27, 17, 15, 26, 13, 30, 52, 63, 36, 30, 53, 0, 40, 4, 58, 61, 37, 46, 56, 51, 21, 20, 27, 17, 15, 26, 13, 30, 52, 63, 36, 30, 57, 34, 22, 37, 35, 6, 12, 25,
57, 34, 22, 37, 35, 6, 12, 25, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
]; ];
let full_base_name_vec: Vec<u8> = vec![ let full_base_name_vec: Vec<u8> = vec![
53, 0, 40, 4, 58, 61, 37, 46, 56, 51, 21, 20, 27, 17, 15, 26, 13, 30, 52, 63, 36, 30, 53, 0, 40, 4, 58, 61, 37, 46, 56, 51, 21, 20, 27, 17, 15, 26, 13, 30, 52, 63, 36, 30, 57, 34, 22, 37, 35, 6, 12, 25,
57, 34, 22, 37, 35, 6, 12, 25, 50, 49, 59, 23, 49, 27, 51, 58, 39, 28, 60, 20, 31, 36, 50, 49, 59, 23, 49, 27, 51, 58, 39, 28, 60, 20, 31, 36, 41, 11, 7, 29, 24, 24, 61, 62, 57, 4, 28, 48, 55, 50, 38, 29,
41, 11, 7, 29, 24, 24, 61, 62, 57, 4, 28, 48, 55, 50, 38, 29, 10, 40, 42, 15, 23, 47, 10, 40, 42, 15, 23, 47, 42, 62, 47, 1, 60, 5, 43, 21, 1, 46, 45, 9, 9, 14, 38, 13, 56, 0, 31, 59, 39, 6, 35, 41, 55,
42, 62, 47, 1, 60, 5, 43, 21, 1, 46, 45, 9, 9, 14, 38, 13, 56, 0, 31, 59, 39, 6, 35, 5, 34, 3, 7, 33, 33, 45, 16, 16, 32, 43, 18, 44, 22, 14, 17, 10, 11, 53, 18, 44, 19, 52, 2, 32, 12, 8, 2, 54, 26, 48,
41, 55, 5, 34, 3, 7, 33, 33, 45, 16, 16, 32, 43, 18, 44, 22, 14, 17, 10, 11, 53, 18, 8, 3, 63, 54, 19, 25,
44, 19, 52, 2, 32, 12, 8, 2, 54, 26, 48, 8, 3, 63, 54, 19, 25,
]; ];
assert_eq!(namer.name_base.to_vec(), base_name_vec); assert_eq!(namer.name_base.to_vec(), base_name_vec);
namer.update_skill(); namer.update_skill();
@ -496,8 +512,8 @@ mod test {
namer.update_skill(); namer.update_skill();
let skill_prop_vec: Vec<u8> = vec![ let skill_prop_vec: Vec<u8> = vec![
13, 0, 0, 0, 0, 0, 0, 0, 6, 8, 0, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 6, 8, 0, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
]; ];
assert_eq!(namer.skl_freq.to_vec(), skill_prop_vec); assert_eq!(namer.skl_freq.to_vec(), skill_prop_vec);
} }
@ -509,8 +525,8 @@ mod test {
namer.update_skill(); namer.update_skill();
let skill_id_vec: Vec<u8> = vec![ let skill_id_vec: Vec<u8> = vec![
9, 13, 12, 38, 4, 27, 26, 15, 16, 32, 24, 5, 7, 21, 18, 10, 37, 2, 6, 20, 39, 1, 14, 3, 9, 13, 12, 38, 4, 27, 26, 15, 16, 32, 24, 5, 7, 21, 18, 10, 37, 2, 6, 20, 39, 1, 14, 3, 11, 29, 22, 33, 19, 0, 30,
11, 29, 22, 33, 19, 0, 30, 31, 17, 28, 34, 35, 23, 8, 25, 36, 31, 17, 28, 34, 35, 23, 8, 25, 36,
]; ];
assert_eq!(namer.skl_id.to_vec(), skill_id_vec); assert_eq!(namer.skl_id.to_vec(), skill_id_vec);
} }

View File

@ -1,7 +1,5 @@
pub struct Player { pub struct Player {
team: String, team: String,
name: String, name: String,
weapon: String, weapon: String,
} }

View File

@ -2,20 +2,17 @@
macro_rules! val { macro_rules! val {
() => { () => {
[ [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 253, 254, 255,
211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
] ]
}; };
} }

19
news.md Normal file
View File

@ -0,0 +1,19 @@
# 各种"新闻"
## tswn
### 0.1.3
> 550E/d
夸张, 比 0.1.1 快了 100E/d
### 0.1.2
优化了一些边界检查, 反正就是没用
`445E/d -> 478E/d`
参考 bench/tswn.md
### 0.1.1
随手发一版

View File

@ -83,10 +83,7 @@ impl WebDriverRunner {
done_target.wait_until().has_attribute("done", "true").await?; done_target.wait_until().has_attribute("done", "true").await?;
let win_data = self let win_data = self.driver.execute("return arguments[0].win_data", vec![done_target.to_json()?]).await?;
.driver
.execute("return arguments[0].win_data", vec![done_target.to_json()?])
.await?;
let win_data: WinData = serde_json::from_value(win_data.json().to_owned())?; let win_data: WinData = serde_json::from_value(win_data.json().to_owned())?;
Ok(win_data) Ok(win_data)
} }

View File

@ -1,11 +1,11 @@
# cargo fmt config # cargo fmt config
# 最大行长 # 最大行长
max_width = 100 max_width = 130
# 链式调用的最大长度 # 链式调用的最大长度
chain_width = 80 chain_width = 90
# 数组的最大长度 # 数组的最大长度
array_width = 70 array_width = 80
# 函数参数的最大长度 # 函数参数的最大长度
attr_fn_like_width = 60 attr_fn_like_width = 60
# 函数调用参数的最大长度 # 函数调用参数的最大长度

View File

@ -69,11 +69,7 @@ async fn execute_gpu(numbers: &[u32]) -> Option<Vec<u32>> {
execute_gpu_inner(&device, &queue, numbers).await execute_gpu_inner(&device, &queue, numbers).await
} }
async fn execute_gpu_inner( async fn execute_gpu_inner(device: &wgpu::Device, queue: &wgpu::Queue, numbers: &[u32]) -> Option<Vec<u32>> {
device: &wgpu::Device,
queue: &wgpu::Queue,
numbers: &[u32],
) -> Option<Vec<u32>> {
// Loads the shader from WGSL // Loads the shader from WGSL
let cs_module = device.create_shader_module(wgpu::ShaderModuleDescriptor { let cs_module = device.create_shader_module(wgpu::ShaderModuleDescriptor {
label: None, label: None,
@ -135,8 +131,7 @@ async fn execute_gpu_inner(
// A command encoder executes one or many pipelines. // A command encoder executes one or many pipelines.
// It is to WebGPU what a command buffer is to Vulkan. // It is to WebGPU what a command buffer is to Vulkan.
let mut encoder = let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None });
device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None });
{ {
let mut cpass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor { let mut cpass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor {
label: None, label: None,