Arrays 优化代码以提高程序的性能

Arrays 优化代码以提高程序的性能,arrays,xml,optimization,performance-testing,file-writing,Arrays,Xml,Optimization,Performance Testing,File Writing,我有一个程序(EOD批处理),它处理每日累积的up会计头寸并更新UPDT表 节目是这样的 Query作为join etc的结果从各个表中获取结果,并将记录存储在tempfile.txt 从tempfile.txt中逐个读取记录,并进行一系列计算 对于读取的每个记录;完成该记录的计算后,我们调用update\u UPDT()方法,将计算值提交到数据库中的UPDT表中 注意:我想提高程序的性能。 请建议一个更好的方法。 我有几个计划 使用Xml而不是tempfile。Xml将更加轻巧 不要一个接一个

我有一个程序(EOD批处理),它处理每日累积的up会计头寸并更新UPDT表

节目是这样的

  • Query作为join etc的结果从各个表中获取结果,并将记录存储在
    tempfile.txt
  • 从tempfile.txt中逐个读取记录,并进行一系列计算
  • 对于读取的每个记录;完成该记录的计算后,我们调用
    update\u UPDT()
    方法,将计算值提交到数据库中的UPDT表中
  • 注意:我想提高程序的性能。
    请建议一个更好的方法。 我有几个计划

  • 使用Xml而不是tempfile。Xml将更加轻巧
  • 不要一个接一个地将每条记录写入数据库,而是写入某个临时表或xml,然后在所有记录的整个计算完成后,将其批量发布到数据库
  • 还有其他建议吗?

    或者使用数组会更好?

    第一件事:测量

    在你开始考虑解决方案之前,你需要有一个很好的想法,知道是什么让事情变得缓慢

    • 将VisualVM之类的探查器附加到流程中,并尝试找出热点
    • 以更好地了解内存分配/清理
    • 测量基础系统性能:CPU利用率、磁盘I/O和网络流量
    一旦你掌握了所有这些信息,你应该能够确定你需要改进的领域。然后,也只有到那时,才是考虑改变什么的时候


    这是唯一可靠的优化方法。

    @谢谢Bizclop。将首先测量热点以找到改进的地方。我测量了性能,似乎updateUPDT()方法被命中了近12000次。因此,12000条记录中的每一条都被逐一更新,这似乎是一个瓶颈。现在,我不再逐个写入所有记录,而是将它们写入“海量XML”。一旦将所有记录插入到大容量xml中,我就必须将其更新到UPDT表中,这是我希望通过存储过程实现的。请帮我查询存储过程。我是否需要在storedproc中编写update语句,还是应该在storedproc中使用join从xml值更新表值。????