加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java作为与MySQL交互的cron脚本与使用PHP

发布时间:2020-12-15 02:24:47 所属栏目:Java 来源:网络整理
导读:我目前有一些使用Cron读取和更新 MySQL数据库的Java程序. 我正在考虑将代码移植到PHP.在我这样做之前,我做了一个简单的基准测试,选择选择某个表中的所有行,然后将值存储在字符串中. 我为PHP和Java程序循环了10,000次. PHP在5秒内运行它. Java花了大约1分钟.
我目前有一些使用Cron读取和更新 MySQL数据库的Java程序.

我正在考虑将代码移植到PHP.在我这样做之前,我做了一个简单的基准测试,选择选择某个表中的所有行,然后将值存储在字符串中.

我为PHP和Java程序循环了10,000次. PHP在5秒内运行它. Java花了大约1分钟.

我对性能的差异感到惊讶.这是对的吗? Java真的很慢吗?或者我做错了什么?

我目前正在使用JDK 6和PHP CLI 5.3在CentOS 5.5中运行cron脚本.

这是Java中的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test {
  private Connection connection = null; 
  private Statement statement = null;

  public static void main(String args[]) 
  {
    (new Test()).run();
  }

  private void initDB() {
    try {
      String url="jdbc:mysql://localhost:3306/db";
      Class.forName( "org.gjt.mm.mysql.Driver" ); 
      connection = DriverManager.getConnection(url,"username","password");
      statement = connection.createStatement();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private String getUserProfiles() 
  {

    String query = "SELECT * FROM UserProfile;";
    String output = "";
    try 
    {
        for(int i = 0; i < 10000; ++i)
        {
            ResultSet rs=statement.executeQuery(query);
            while(rs.next())
                output += rs.getString("name");
        }
    } 
    catch (Exception e) 
    {
      e.printStackTrace();
    }

    return output;
  }

/更多代码继续/

然后在PHP中:

try 
{
    $db = new PDO("mysql:host=localhost;dbname=db;charset=utf8",'username','password');
    $str = "";
    for($i=0; $i < 10000; ++$i)
    {
        $qry = $db->prepare('SELECT * FROM UserProfile;');

        $qry->execute();
        $result = $qry->fetchAll(PDO::FETCH_OBJ);
        foreach($result as $profile)
        {
            $str .= $profile->name;
        }   
    }
}
catch(PDOException $e)
{
    echo $e->getMessage();
    exit;
}

解决方法

在这种情况下,您可以使用StringBuffer来提高java的字符串性能

private String getUserProfiles() 
{
    String query = "SELECT * FROM UserProfile;";
    StringBuffer output = new StringBuffer();
    try
    {
        for(int i =0; i < 10000; ++i)
        {
            ResultSet rs=statement.executeQuery(query);
            while(rs.next())
                output.append(rs.getString("name"));
        }
    } 
    catch (Exception e) 
    {
      e.printStackTrace();
    }
    return output.toString();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读