在我写的一个程序中,在这个例程中,20%的时间用于在内循环中找出最少3个数字:
static inline unsigned int
min(unsigned int a, unsigned int b, unsigned int c)
{
unsigned int m = a;
if (m > b) m = b;
if (m > c) m = c;
return m;
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以加快速度吗?对于x86/x86_64,我也可以使用汇编代码.
编辑:回复一些评论:
*正在使用的编译器是gcc 4.3.3
*就汇编而言,我只是一个初学者.我在这里要求组装,学习如何做到这一点.:)
*我有四核Intel 64运行,所以支持MMX/SSE等.
*这里很难发布循环,但我可以告诉你它是levenshtein算法的一个高度优化的实现.
这是编译器给我的非内联版本的min:
.globl min
.type min, @function
min:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %edx
movl 12(%ebp), %eax
movl 16(%ebp), %ecx
cmpl %edx, %eax
jbe .L2
movl %edx, %eax
.L2:
cmpl %ecx, %eax
jbe .L3 …Run Code Online (Sandbox Code Playgroud) 作为一名开发人员刚刚在一个项目中编写了数千行复杂的多线程"C"代码,并且将来会被其他几个不熟悉此代码的开发人员进行增强,修改等等,我想找出你们试图在这些代码中添加什么样的安全网?作为一个例子,我可以这样做:
您在已编写的多线程代码中添加了哪些安全网?
当其他开发人员修改此类代码时,您遇到了哪些问题?
你在这些代码中加入了什么样的调试工具?
感谢您的意见.