[improvement]hankakuListの管理方法
Closed this issue · 3 comments
mk3008 commented
/// <summary>
/// 半角と認識する文字リスト
/// </summary>
private static List<char> hankakuList = new List<char>()
存在チェックならHashSetを使用したほうが高速化が望めるかもしれない。
https://learn.microsoft.com/ja-jp/dotnet/api/system.collections.generic.hashset-1?view=net-8.0
参考
https://qiita.com/KazTag/items/68685d2b2f5b8d036403#comment-3468ce77faf80ee0615b
mk3008 commented
HashSetで速度改善があることが確認できた。
List
Method | Mean | Error | StdDev |
---|---|---|---|
CountHankaku | 34.36 μs | 0.123 μs | 0.109 μs |
HashSet
Method | Mean | Error | StdDev |
---|---|---|---|
CountHankaku | 22.64 μs | 0.095 μs | 0.089 μs |
mk3008 commented
変数にせず、関数内でSwitchで判定した場合、更に速くなった
Switch
Method | Mean | Error | StdDev |
---|---|---|---|
CountHankaku | 12.43 μs | 0.023 μs | 0.020 μs |
mk3008 commented
ToHankaku も関数内でSwitch判定にすると高速化されることが確認できた。
Dictionary
Method | Mean | Error | StdDev |
---|---|---|---|
ToHankaku | 26.90 μs | 0.145 μs | 0.129 μs |
Switch
Method | Mean | Error | StdDev |
---|---|---|---|
ToHankaku | 12.66 μs | 0.060 μs | 0.056 μs |