我在网上判断网上注册,预定义测试存在不同的问题,以计算执行时间。
我提交了两次相同的代码,但有一点不同:
if(x1 < x2 || y1 < y2)
//code
第二次提交:
if(x1 < x2 ||y1 < y2)
//code
正如您在第二次提交中看到的那样,||
和y1
之间没有空格,我的结果是:
如何在第一次提交中获得更短的时间?代码是一样的,唯一的变化就是空格。
编辑:法官使用&#34; gcc&#34;编译器和测试总是一样的。
答案 0 :(得分:7)
这两个代码片段将生成完全相同的可执行文件,因此空白是无关紧要的。 可能唯一影响的地方是编译时间(因为解析时只需要一个字节),但如果非常感到惊讶,它显而易见。
如果运行时间很短,任何数量的环境变量都可能会导致结果偏差 - 临时内存加载,某个页面在错误的时刻交换到磁盘,您可以命名。底线 - 这可能是一个糟糕的基准。这个程序应该执行一个gazilion时间和平均值进行比较。执行一次会给无意义的噪音带来方式过多的重量。
答案 1 :(得分:5)
空格与C(以及大多数其他语言)无关。在任何体面的编译器中,这两个版本将生成完全相同的机器语言指令输出。
速度的差异取决于测量的一些随机性,而不是间距。
要获得更快的代码,您需要考虑更好的算法,或者,如果抽象算法已经是最优的,则需要考虑缓存一致性等问题。
答案 2 :(得分:4)
在大多数编程语言中,空格是无关紧要的。 在实际应用中,执行/编译时间取决于您使用的算法而不是空格。
答案 3 :(得分:3)
如前所述,空白是无关紧要的,不会导致任何明显的延迟。不要从一组数据中得出相同结论,而是检查多次执行,比如10来看看差异。 差异也可能是服务器端编译代码的结果,因为在执行期间服务器的状态可能不同。
答案 4 :(得分:0)
执行时间将取决于 1)计算机的速度 2)代码的效率。(逻辑)
即使每次运行程序时逻辑相同,其执行时间也会不同。