我最近一直在为大学做一些任务,其中包括使用 Turbo Profiler(遗憾的是,该软件在任务中隐式声明)来分析 Simpson 数值积分的 C 和 Pascal 实现。我遇到了一个非常奇怪的案例,Pascal 比 C 快得多。
帕斯卡:
i: integer, lower: real, delta_x: real;
....
(0.0000 seconds) (30 times) x:=lower+delta_x*(2.0*i-1.0);
C:
long i, double lower, double delta_x;
....
(0.0549 seconds) (30 times) double x = lower + delta_x * (2.0 * i - 1.0);
那么,real
和double
(和integer
和long
)之间的区别或者只是 Pascal 的编译器更擅长处理数学运算,这可能是什么?