C的本质,和C++不同,C对string没有特殊的处理。C++的string,比较长度是存在object里面的。也是有始点,终点的。而C没有。所以,不能每次loop都对string来计算长度,那样,成本巨大。
应该是
for(int i=0, n=strlen(s)+1; i<n; i++)
{...}
C的本质,和C++不同,C对string没有特殊的处理。C++的string,比较长度是存在object里面的。也是有始点,终点的。而C没有。所以,不能每次loop都对string来计算长度,那样,成本巨大。
应该是
for(int i=0, n=strlen(s)+1; i<n; i++)
{...}
•
LOL, you certainly showed Harvard it sucks
-tibuko-
♂
(177 bytes)
()
08/31/2022 postreply
12:22:31
•
compiler會optimized吧
-violinpiano-
♂
(0 bytes)
()
08/31/2022 postreply
12:45:24
•
不会,如果在竞赛中
-兄贵-
♂
(240 bytes)
()
08/31/2022 postreply
12:52:27
•
现在的compile应该会。s是local变量,而且在loop里没变化。
-ccb168-
♂
(0 bytes)
()
08/31/2022 postreply
13:05:00
•
什么编译器? 贴一下您的测试结果,好吗
-兄贵-
♂
(0 bytes)
()
08/31/2022 postreply
13:41:26
•
try -O2 with gcc
-ccb168-
♂
(0 bytes)
()
08/31/2022 postreply
15:10:00
•
应该不会优化,这是memory access,完全可能有别的在改memory
-avw-
♀
(0 bytes)
()
08/31/2022 postreply
13:19:31
•
笑死人了,人家教授后来在问 i 小于strlen(s)有什么值得优化
-kevin2018-
♂
(177 bytes)
()
08/31/2022 postreply
13:13:18