SQRPI / JiaGuoMeng

家国梦建筑摆放计算
122 stars 39 forks source link

Pandas iloc bad performance #39

Open zz920 opened 5 years ago

zz920 commented 5 years ago

Line 66: Upgrade.incomePerSec.iloc[NowGrade[i]-1] 在执行时会占用大量的时间, 测试环境如下: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz linux

在原版本情况下时间消耗约为25s: 100%,00:26<00:00|███████████████████████████████████|164640/164640.0,6107.95it/s 最优策略: (('木材厂', '电厂', '钢铁厂'), ('便利店', '民食斋', '媒体之声'), ('木屋', '人才公寓', '空中别墅')) 总秒伤: 890.79bb 各建筑等级: [('木材厂', 1200), ('电厂', 1000), ('钢铁厂', 1200), ('便利店', 1000), ('民食斋', 1100), ('媒体之声', 1050), ('木屋', 1000), ('人才公寓', 1100), ('空中别墅', 1000)] 各建筑秒伤: [('木材厂', '840.63bb'), ('电厂', '744.11aa'), ('钢铁厂', '46.2bb'), ('便利店', '575.86aa'), ('民食斋', '816.68aa'), ('媒体之声', '32.92aa'), ('木屋', '415.21aa'), ('人才公寓', '1.06bb'), ('空中别墅', '312.37aa')]

在改为使用local list之后时间约为3s: 100%,00:03<00:00|███████████████████████████████████████████████████████████████████████████████|164640/164640.0,46827.66it/s 最优策略: (('木材厂', '电厂', '钢铁厂'), ('便利店', '民食斋', '媒体之声'), ('木屋', '人才公寓', '空中别墅')) 总秒伤: 890.79bb 各建筑等级: [('木材厂', 1200), ('电厂', 1000), ('钢铁厂', 1200), ('便利店', 1000), ('民食斋', 1100), ('媒体之声', 1050), ('木屋', 1000), ('人才公寓', 1100), ('空中别墅', 1000)] 各建筑秒伤: [('木材厂', '840.63bb'), ('电厂', '744.11aa'), ('钢铁厂', '46.2bb'), ('便利店', '575.86aa'), ('民食斋', '816.68aa'), ('媒体之声', '32.92aa'), ('木屋', '415.21aa'), ('人才公寓', '1.06bb'), ('空中别墅', '312.37aa')]

zz920 commented 5 years ago

因为没权限提pr,就写到这里了 line 15 add localIncomePerSec = Upgrade.incomePerSec.tolist() line 66 change to localIncomePerSec[NowGrade[i]-1]

SQRPI commented 5 years ago

这个建议很好,我也发现这句开销很大了,后面更新一下