私信  •  关注

rbp

rbp 最近创建的主题
rbp 最近回复了
15 年前
回复了 rbp 创建的主题 » 如何通过一个简单的循环获得非常快的python

[编辑以反映新发现并在SPOJ上传递代码]

通常,当使用python进行spoj时:

  • 不要使用“原始输入”,使用sys.stdin.readlines()。这会对大输入产生影响。另外,如果可能的话(也就是说,对于这个问题),立即读取所有内容(sys.stdin)。readlines(),而不是逐行读取(“for line in sys.stdin…”)。
  • 同样,不要使用“print”,使用sys.stdout.write()-并且不要忘记“\n”。当然,这只在多次打印时才相关。
  • 正如S.Mark建议的,使用psyco。它既适用于Spoj的python2.5也适用于python2.6(测试一下,它就在那里,而且很容易发现:使用psyco的解决方案通常有大约35MB的内存使用偏移)。这很简单:只需在“import sys”:import psyco;psyco.full()之后添加即可。
  • 正如Justin所建议的,将代码(psyco咒语除外)放在一个函数中,并在代码末尾简单地调用它。
  • 有时,创建列表并检查其长度可能比创建列表并添加其组件更快。
  • 支持列表理解(和生成器表达式,如果可能的话)而不是“for”和“while”。对于某些构造,map/reduce/filter还可以加快代码的速度。

根据这些指导方针,我成功地通过了无遗嘱。不过,仍在测试替代方案。