背景:我试图创建一个纯粹的D语言实现的功能,大致相当于C's memchr,但使用数组和指标而不是指针。原因是std.string可以在编译时函数评估中使用。对于那些你不熟悉的W/D,如果满足某些限制,可以在编译时评估函数。一个限制是他们不能使用指针。另一个是他们不能调用C函数或使用内联汇编语言。让字符串库在编译时工作对于编译时代码gen hacks很有用。memchr()如何工作?
问题: memchr如何在引擎盖下工作以尽可能快地执行?在Win32上,我使用简单的循环能够在纯D中创建的任何东西,即使使用明显的优化技术,例如禁用边界检查,循环展开等等,速度至少也会降低两倍。可以使用哪些非显而易见的技巧像在字符串中查找字符一样简单?
谢谢,除了这是LGPL代码和D的标准库应该是允许许可。我不希望这是一个问题。 – dsimcha 2009-02-08 03:59:50
嗯,我建议你看看它的技术灵感,而不是复制源。 – Chris 2009-02-08 04:03:10
它大约有150行代码,其中大约一半或更多是注释,因此它以相当详细的方式解释了优化。 – Chris 2009-02-08 04:04:15