Fortran Coder

查看: 203|回复: 6

[原创] 用fortran做了一个地形渲染组件,都快疯了

[复制链接]

8

帖子

2

主题

0

精华

入门

F 币
63 元
贡献
30 点
发表于 2019-7-4 01:06:12 | 显示全部楼层 |阅读模式
            本来用python做的,不到两天就搞定了,包括读取地形数据,再写入图片,这些完全从头开始。
但是,运行让人崩溃i,渲染一个平方度区域,要2100秒,也就是40多分钟。要是配色方案固定了也无所谓,几天几夜就出来了。
实在不能忍,那就用编译语言吧。20几年前学过fortran,77语法,老太太教的。二十几年完全没碰。那就怀旧一下。弄了个simply fortran,核心是gcc。然后从头开始学起。
以为很简单,哪知道,fortran语法超级变态。int-2/int-4互传都不让过。
做颜色变化率的时候,悄然被截零了,幸好,还记得老师说过,整数很容易溢出或者截0。用实数验证了。因为调用非常频繁,还是决定用整数,改变计算顺序。k=a/b改成k=10000/b*a,a<b,都是int。后续再k/10000。颜色范围是0~255,中间计算范围很容易确定。
到今天下午,终于搞通了。只是一个组件dll,两头都在python。速度在15~30秒。性能一下子提升100倍。
纯python,2100秒
fortran+py,20秒!
读文件,写文件,都是python干的,实在没能力分析二进制文件格式再读写。

手头没有C++编译器,不知道C++能干到多少秒。
1平方度=3600x3600点,13百万的巨大矩阵,fortran10秒钟就搞定了。当然纯Fortran做起来很难。

回复

使用道具 举报

8

帖子

2

主题

0

精华

入门

F 币
63 元
贡献
30 点
 楼主| 发表于 2019-7-4 12:01:21 | 显示全部楼层
花了好几天,还是很值得的。
选一个中国地图,只要半天就可以了,要是用python,时间*100。
以后就用fortran做核心过程。

1429

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
784 元
贡献
577 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-7-4 17:45:18 | 显示全部楼层
开发效率与运行效率很难兼得,舍之、弃之、得之。

70

帖子

15

主题

0

精华

专家

齊天大聖

F 币
358 元
贡献
224 点
发表于 2019-7-5 19:36:00 | 显示全部楼层
python怎么把数据传给fortran的,Fortran又怎么把数据传给pythonde?

120

帖子

8

主题

0

精华

宗师

F 币
3110 元
贡献
520 点
发表于 2019-7-7 08:37:56 | 显示全部楼层
lookbook 发表于 2019-7-5 19:36
python怎么把数据传给fortran的,Fortran又怎么把数据传给pythonde?

嗯,同希望学点fortran和python的混合编程
想知道怎么实现数据互传的

64

帖子

16

主题

1

精华

大师

F 币
636 元
贡献
386 点
发表于 2019-7-7 13:41:11 来自移动端 | 显示全部楼层
本帖最后由 weixing1531 于 2019-7-7 14:11 编辑

感觉Fortran90之后语法就是个大杂烩
动态数组、派生类型、模块学VB的
指针(引用)、操作符重载、多态、抽象类学C++
单继承学Java
属性与方法的绑定学Ada的
实例对象this学Python

当然也有独创:class、submodule、pass、block、select type、coarray等

感觉还缺少的部分:
类的成员变量属性少了个类似C++中protected属性,即允许子类访问父类的成员变量


70

帖子

15

主题

0

精华

专家

齊天大聖

F 币
358 元
贡献
224 点
发表于 2019-7-7 15:07:07 | 显示全部楼层
weixing1531 发表于 2019-7-7 13:41
感觉Fortran90之后语法就是个大杂烩
动态数组、派生类型、模块学VB的
指针(引用)、操作符重载、多态、抽 ...

给大佬跪了。。。您会这么多语言?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-10-17 03:54

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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