Fortran Coder

查看: 1410|回复: 3
打印 上一主题 下一主题

[讨论] 使用对整个数组操作方法相比使用循环操作数组方法,会...

[复制链接]

713

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
612 元
贡献
313 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2023-5-11 14:42:19 | 显示全部楼层
更严格的说法是:
向量化设计,对编译器而言,拥有更大的优化空间,更易于编译器做出优化。

实际情况是:
需要看你使用的什么编译器,开启的何种优化选项。编译器的表现,受多种因素影响。

713

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
612 元
贡献
313 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2023-5-11 14:44:23 | 显示全部楼层
例如你的代码,经某些编译器优化之后,可能会变成:
[Fortran] 纯文本查看 复制代码
call cpu_time(start_time)
do i = 1, array_size
  res_array1(i) = array1(i) * array2(i)
end do
call cpu_time(end_time)
write(*,*) "使用循环操作需要的时间:", (end_time - start_time)*1000, "毫秒"
call cpu_time(start_time)
res_array2 = array1 * array2
call cpu_time(end_time)
write(*,*) "使用数组操作需要的时间:", (end_time - start_time)*1000, "毫秒"

也就是 res_array2 = array1 + array2 会被完全优化掉,不予计算。甚至可能 do enddo 被优化成数组整体操作。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-21 07:04

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表