Fortran Coder

标题: 用fortran做了一个地形渲染组件,都快疯了 [打印本页]

作者: randomzoom    时间: 2019-7-4 01:06
标题: 用fortran做了一个地形渲染组件,都快疯了
            本来用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做起来很难。


作者: randomzoom    时间: 2019-7-4 12:01
花了好几天,还是很值得的。
选一个中国地图,只要半天就可以了,要是用python,时间*100。
以后就用fortran做核心过程。
作者: fcode    时间: 2019-7-4 17:45
开发效率与运行效率很难兼得,舍之、弃之、得之。
作者: lookbook    时间: 2019-7-5 19:36
python怎么把数据传给fortran的,Fortran又怎么把数据传给pythonde?
作者: liudy02    时间: 2019-7-7 08:37
lookbook 发表于 2019-7-5 19:36
python怎么把数据传给fortran的,Fortran又怎么把数据传给pythonde?

嗯,同希望学点fortran和python的混合编程
想知道怎么实现数据互传的
作者: weixing1531    时间: 2019-7-7 13:41
本帖最后由 weixing1531 于 2019-7-7 14:11 编辑

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

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

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



作者: lookbook    时间: 2019-7-7 15:07
weixing1531 发表于 2019-7-7 13:41
感觉Fortran90之后语法就是个大杂烩
动态数组、派生类型、模块学VB的
指针(引用)、操作符重载、多态、抽 ...

给大佬跪了。。。您会这么多语言?




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2