程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了改善此方案性能的方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决改善此方案性能的方法?

开发过程中遇到改善此方案性能的方法的问题如何解决?下面主要结合日常开发的经验,给出你关于改善此方案性能的方法的解决方法建议,希望对你解决改善此方案性能的方法有所启发或帮助;

for循环由于两个原因而花费时间。 1)个人电子邮件通过减少传输连接来 改善它2)个人提交通过以下方法来改善它

所以理想的情况是同时处理这两种情况,我建议批量处理1000次,然后再打数字

int BATCH_SIZE = 1000
conn = DriverManager.getConnection("username","password");
conn.setautoCommit(false);
Statement stmt = conn.createStatement(
        ResultSet.TYPE_SCRolL_INSENSITIVE,
        ResultSet.CONCUR_UPDAtable);
int count = 0;

Map<String, String> emails_map = new HashMap(BATCH_SIZE)<String, String>;
for (Map.Entry<String, List<ClassOBj>> entry : testMap
        .entrySet()) {
    String email = get_useremail();
    String const_val = do_magic(); // this is how you are computing some constant
    String body = construct_body();

    count++;
    String sql = "YOUR UPDATE STATEMENT";
    stmt.executeUpdate(sql);  
    emails_map.put(email, body); // can create 
    if (count % BATCH_SIZE == 0) {
        //commits all transcations
        conn.commit();
        //bulk send emails sending 
        //http://stackoverflow.com/questions/13287515/how-to-send-bulk-mails-using-javax-mail-API-efficIEntly-can-we-use-reuse-auth

        bulk_emails_send(emails_map)
    }

}


public voID bulk_emails_send(Map<String, String> emails_map) {
    // Get the default Session object through your setting
    Session session = Session.getDefaultInstance(propertIEs);
    Transport t = session.getTransport();
    t.connect();
    try {
        for (String email_ID in emails_map) {
            Message m = new MimeMessage(session);
            //add to, from , subject, body
            m.saveChanges();
            t.sendMessage(m, m.getAllRecipIEnts());
        }
    } finally {
        t.close();
    }
}

解决方法

我有一张地图,其中填充了大量数据(大约有300,000条记录)

并如下迭代

    for (Map.Entry<String,List<ClassOBj>> entry : testMap
                    .entrySet()) {
 // send email with map keys as email'id
 // email content is populated from the list
// Perform a sql update to the column with the dyanamic value generated here with the email'id

}
如上所述,我担心由于在for循环内执行上述操作而导致的性能问题。

更新:

情况是。我正在迭代一个包含大量数据的地图,

在迭代它时,我正在获取用户ID,并且我必须对用户ID进行计算。例如,考虑userid+some constants并应该在数据库表中对其进行更新。

并且还应该与我地图中的列表值一起添加到电子邮件内容中

所以我认为无法进行批量更新,我的理解正确吗?

我应该遵循这种方法吗?或有其他选择

大佬总结

以上是大佬教程为你收集整理的改善此方案性能的方法全部内容,希望文章能够帮你解决改善此方案性能的方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: