Joe*_*eky 4 c# performance parsing
我有一系列ulong实例,每个实例包含两个单独的值.前4个字节代表一个uint值,后4个字节代表另一个.解析ulong为两个uint变量的最有效方法是什么?这将发生在紧密的循环中,所以我正在寻找最快的模式.
两种选择:
unsafe代码或滥用显式布局struct(作为联合)以静默方式将其撕成碎片我通常更喜欢后者; 即
uint x = (uint)(value & 0xFFFFFFFF), y = (uint)((value >> 32)&0xFFFFFFFF)
Run Code Online (Sandbox Code Playgroud)
除了在更多环境中工作(并非所有VM都允许unsafe)之外,这还避免了在不同端机器上出现混淆的风险(可能使用Mono).
该unsafe版本将是这样的:
uint* ptr = (uint*)(void*)&value;
uint x = ptr[0], y = ptr[1];
Run Code Online (Sandbox Code Playgroud)
为此更快:尝试是选项和时间t!微优化只能在特定的代码上下文中进行评估.
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |