perl – 为什么Tk帆布这么慢?
发布时间:2020-12-15 23:32:43 所属栏目:大数据 来源:网络整理
导读:我使用Perl和TK编写了元胞自动机(Conway的生命游戏),只是为了娱乐和练习.它适用于控制台输出.当我使用TK时,在第一个版本中我只删除并添加新单元格(矩形),大约100步后我的程序减慢了(大约10次).然后我重写了图形部分:最初制作所有2500个单元格(50×50),然后
我使用Perl和TK编写了元胞自动机(Conway的生命游戏),只是为了娱乐和练习.它适用于控制台输出.当我使用TK时,在第一个版本中我只删除并添加新单元格(矩形),大约100步后我的程序减慢了(大约10次).然后我重写了图形部分:最初制作所有2500个单元格(50×50),然后改变颜色而不是添加/删除它们.但经过600-700步后,我重新设计的自动机也开始减速.
这是传统知识的特征/错误还是我做错了什么? 按标签更改颜色: $canvas->itemconfigure("cell"."$x $y",-fill=>'blue'); 创建网格: for($y = 0; $y < 50; $y++) { for($x = 0; $x < 50; $x++) { $canvas->createRectangle($x * 10,$y * 10,($x + 1) * 10,($y + 1) * 10,-fill=>'white',-tags=>["cell"."$x $y"]); } } 启动和停止循环: sub start { $repeat = $MainWindow->repeat($speed,sub{&maketurn;}); # Function "maketurn" is not important,it is a simple counting of "alive" cells # and changing color by tag } sub stop { if(defined($repeat)) { $repeat->cancel(); } } 解决方法
我发现有关tk canvas小部件的文章很慢,有很多项目.问题听起来与您的问题非常相似:
http://code.activestate.com/lists/perl-tk/17282/ 解决方案可能是使用tk照片小部件,其行为很像位图.修改代码会有点痛苦,但似乎画布窗口小部件本身就很慢,有许多对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |