我目前有一些使用Cron读取和更新MySQL数据库的Java程序.我正在考虑将代码移植到PHP.在我这样做之前,我做了一个简单的基准测试,选择选择某个表中的所有行,然后将值存储在字符串中.我为PHP和Java程序循环了10,000次....
我目前有一些使用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();
}
沃梦达教程
本文标题为:Java作为与MySQL交互的cron脚本与使用PHP
基础教程推荐
猜你喜欢
- 详解 hibernate mapping配置 2023-08-02
- jsp中文乱码问题的简单解决方法 2023-07-30
- JavaSE实现图书管理系统的示例代码 2023-04-23
- SpringBoot配置绑定方法详解 2023-06-24
- Java如何实现文件压缩与上传FTP 2023-01-18
- Java全面细致讲解Wrapper的使用 2022-11-25
- Spring Security权限管理实现接口动态权限控制 2023-01-18
- mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例 2023-05-19
- Java深入讲解static操作符 2023-03-06
- BeanUtils.copyProperties复制对象结果为空的原因分析 2023-01-08