|
本来用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做起来很难。
|
|