我该怎么做才能加快代码速度?有没有不同的编译器可以更好地优化C++?
我已经尝试过优化代码本身,例如使用
x >> 3
而不是x / 8
(整数除法),或者y & 63
而不是y % 64
等技术。我应该如何构建项目,使其在C++中更具性能?编辑:
我必须承认,我还没有研究编译器如何优化代码。我将在大学里上一些专门学习编译器和解释器的课程。
至于我的C++代码,它并不是非常复杂。没有任何包含文件,只有“基本”数学运算和我们称之为“状态跳转”的操作来产生伪随机结果。我们做的最复杂的事情是位运算,实际上进行加密和未经检查的乘法在初始哈希阶段。有动态分配的二维数组,它们在Encryption对象的生命周期内保持活动状态(并在析构函数中正确释放)。这里只有180行代码。好吧,我的微观优化可能不是必要的,但我应该相信它们不是问题,而是时间问题。为了真正强调这一点,这是程序中最复杂的代码行:
input[L + offset] ^= state[state[SIndex ^ 255] & 63];
我没有移动数组或处理对象。
从语法上讲,整个代码集都运行得很完美,如果我用C#加密并用C++或Java解密,或者用任意一种语言加密并用另外两种语言解密,所有3种语言都会像你期望的那样互相交互。
我并不一定希望C++比C#或Java运行得更快(它们之间的差距不到1 MB/s),但我相信有办法让C++运行得与它们一样快,或至少比现在更快。我承认我不是C++专家,我肯定没有像你们中的许多人那样经验丰富,但如果我可以将99%的代码从C#复制并粘贴到C++中,并在5分钟内使其正常工作,那么我有点失望它需要两倍的执行时间。
重新编辑:
我发现了一种在Visual Studio中优化的方法,我之前忘记设置了。现在C++运行的速度比C#快50%。感谢所有的提示,我在研究中学到了很多关于编译器的知识。