背景:我正在尝试创建一个纯D语言实现的功能,大致相当于C的memchr,但使用数组和索引而不是指针。原因是为了使std.string能够与编译时函数评估一起使用。对于那些不熟悉D语言的人来说,如果满足某些限制,函数可以在编译时进行评估。其中之一的限制是它们不能使用指针。另一个是它们不能调用C函数或使用内联汇编语言。使字符串库在编译时工作对于某些编译时代码生成黑客很有用。
问题:memchr如何在底层工作以达到如此快的速度?在Win32上,我使用简单的循环所能创建的任何东西都至少比显然的优化技术(例如禁用边界检查、循环展开等)慢两倍。对于如此简单的找到字符串中的字符这样的事情,有哪些非明显的技巧可用?