@@ -33,11 +33,12 @@ public ulong GenerateVersion2(string value)
3333 // Make hash more sensitive for short string like 'a', 'b', 'c'
3434 var valueWithPadding = $ "{ value } { PADDING_CHAR } ";
3535
36- var valueUtf8 = ToUTF8 ( valueWithPadding ) ;
36+ // Convert to UTF8 bytes once, avoiding repeated conversions
37+ var valueUtf8Bytes = Encoding . UTF8 . GetBytes ( valueWithPadding ) ;
3738
3839 var max = ( Int64 . MaxValue / ( long ) SEED ) ;
3940
40- for ( int i = 0 ; i < valueUtf8 . Length ; i ++ )
41+ for ( int i = 0 ; i < valueUtf8Bytes . Length ; i ++ )
4142 {
4243 if ( hash > max )
4344 {
@@ -52,13 +53,11 @@ public ulong GenerateVersion2(string value)
5253 Debug . WriteLine ( $ " ") ;
5354 }
5455
55- var bytes = ToUTF8Bytes ( valueUtf8 [ i ] . ToString ( ) ) ;
56+ Debug . WriteLine ( $ " { valueUtf8Bytes [ i ] } byte value" ) ;
5657
57- Debug . WriteLine ( $ " { valueUtf8 [ i ] . ToString ( ) } > { bytes [ 0 ] } " ) ;
58+ hash = ( hash * ( long ) SEED ) + valueUtf8Bytes [ i ] ;
5859
59- hash = ( hash * ( long ) SEED ) + bytes [ 0 ] ;
60-
61- Debug . WriteLine ( $ "{ valueUtf8 [ i ] . ToString ( ) } > { bytes [ 0 ] } > hash = { hash } ") ;
60+ Debug . WriteLine ( $ "{ valueUtf8Bytes [ i ] } > hash = { hash } ") ;
6261 }
6362
6463 return ( ulong ) hash ;
@@ -80,11 +79,12 @@ public ulong GenerateVersion3(string value)
8079 // Make hash more sensitive for short string like 'a', 'b', 'c'
8180 var valueWithPadding = $ "{ value } { PADDING_CHAR } ";
8281
83- var valueUtf8 = ToUTF8 ( valueWithPadding ) ;
82+ // Convert to UTF8 bytes once, avoiding repeated conversions
83+ var valueUtf8Bytes = Encoding . UTF8 . GetBytes ( valueWithPadding ) ;
8484
8585 var max = ( JAVASCRIPT_MAX_SAFE_INTEGER / SEED ) ;
8686
87- for ( int i = 0 ; i < valueUtf8 . Length ; i ++ )
87+ for ( int i = 0 ; i < valueUtf8Bytes . Length ; i ++ )
8888 {
8989 if ( hash > max )
9090 {
@@ -99,29 +99,17 @@ public ulong GenerateVersion3(string value)
9999 Debug . WriteLine ( $ " ") ;
100100 }
101101
102- var bytes = ToUTF8Bytes ( valueUtf8 [ i ] . ToString ( ) ) ;
103-
104- Debug . WriteLine ( $ "{ valueUtf8 [ i ] . ToString ( ) } > { bytes [ 0 ] } ") ;
102+ Debug . WriteLine ( $ "{ valueUtf8Bytes [ i ] } byte value") ;
105103
106- hash = ( hash * SEED ) + bytes [ 0 ] ;
104+ hash = ( hash * SEED ) + valueUtf8Bytes [ i ] ;
107105
108- Debug . WriteLine ( $ "{ valueUtf8 [ i ] . ToString ( ) } > { bytes [ 0 ] } > hash = { hash } ") ;
106+ Debug . WriteLine ( $ "{ valueUtf8Bytes [ i ] } > hash = { hash } ") ;
109107 }
110108
111109 return hash ;
112110 }
113111
114- private string ToUTF8 ( string value )
115- {
116- var bytes = Encoding . Default . GetBytes ( value ) ;
117- return Encoding . UTF8 . GetString ( bytes ) ;
118- }
119112
120- private byte [ ] ToUTF8Bytes ( string value )
121- {
122- var bytes = Encoding . UTF8 . GetBytes ( value ) ;
123- return bytes ;
124- }
125113
126114
127115
0 commit comments