Java is used as a cron script to interact with MySQL and PHP
•
Java
I currently have some Java programs that use cron to read and update MySQL databases
I'm considering porting the code to PHP Before I did this, I did a simple benchmark to select all rows in a table and store the values in a string
I cycled 10000 times for PHP and Java programs PHP runs it in 5 seconds Java took about a minute
I was surprised by the difference in performance Is that right? Is java really slow? Or did I do something wrong?
I am currently using JDK 6 and PHP cli 5.3 to run cron scripts in CentOS 5.5
This is the code in 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;
}
/More code continue/
Then in 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;
}
Solution
In this case, you can use StringBuffer to improve the string performance of 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();
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
