我的任务是优化一些运行数小时的计划任务。其中一项任务贯穿于1995年至今的数据。我的第一个想法(除了修改查询等)是通过多年创建一个cfloop并为每年创建一个线程。
这是一个好方法吗?有没有更好的方法来分担这项任务的工作量?
答案 0 :(得分:2)
在优化任何事情之前,你真的需要弄清楚什么是慢的。否则,您可能会花费大量时间调整代码以获得相对较小的收益。数据库通常是瓶颈,但您需要先找到它。
在简单的层面上,您可以启用调试(在开发机器上)并查看花费的时间。还有像Fusion Reactor这样的工具可以为您提供更多洞察力。或者,您可以只添加一些<cflog>
调用到您的脚本,然后分析它们以识别慢速块。无论你决定采用哪种方式,你都需要知道你的努力最佳用途。
其他一些想法......
如果没有,则将数据编译一次并存储,以便计划任务不必每次都重做工作
如果你不小心,你可能会用完线程 - 如果你的服务器正在运行其他东西,这将特别糟糕。但是,线程可能是您解决方案的一部分。