간단한 테스트 응용 프로그램이 다른 결과를주는 이유를 파악하는 데 도움이 될지 궁금합니다. 간단한 데이터베이스 쿼리를 만들고 결과를 반복하는 두 가지 테스트 프로그램을 만들었습니다. 첫 번째는 PHP를 사용하여 만들어졌으며 두 번째 것은 Java로 만들어졌습니다.간단한 sql 쿼리를 만들 때 Java와 PHP
나는 자바가 더 잘 수행 될 것이라는 것을 알았지 만 자바가 거의 20 배는 더 잘 수행 할 것이라고 믿기가 힘듭니다 (아래 결과 참조).
PHP :
$sql = "select * from message where user_id=20";
$db = get_PDO();
$stm = $db->prepare($sql);
for($i=0;$i<10000;$i++)
{
echo $i."\n";
$res = $stm->execute();
$rows = $stm->fetchAll();
}
echo "done";
get_PDO 그냥 데이터베이스에 연결하고 PDO 객체를 반환하는 함수이다.
자바 :
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
Statement st= null;
try
{
String userName = ""; // db username
String password = ""; // db password
String url = "jdbc:mysql://localhost/test"; //test = db name
Class.forName ("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
System.out.println ("Database connection established");
}
catch (Exception e)
{
System.err.println ("Cannot connect to database server: "+e.toString());
}
finally
{
if (conn != null)
{
String query="select * from message where user_id=20";
try{
st = conn.createStatement();
}
catch(Exception e)
{
e.printStackTrace();
try{
conn.close();
}
catch(Exception er) {}
return;
}
for(int i=0;i<10000;i++)
{
System.out.println(i);
try
{
ResultSet rs = st.executeQuery(query);
while(rs.next())
{
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
try
{
conn.close();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
결과 :
나는 시간을 사용하여 성능을 측정 하였다. (즉, 시간의 PHP test.php 및 시간 자바에 연결합니다.)
PHP :
real 1m34.337s
user 1m32.564s
sys 0m0.716s
자바 :
real 0m5.388s
user 0m4.428s
sys 0m0.972s
정말 훨씬 더 빨리 또는 내가 바보 같은 짓을 한 자바인가? :)
정말 실마리가 없지만, java는 "st.executeQuery (query)"로 결과 캐싱을 수행합니다. – aderuwe
Hmh. 루프 내부에서 createStatement() 파트를 이동했습니다. 결과가 조금 바뀌 었습니다. 이제 java를 사용하여 다음 결과를 얻습니다. real \t 0m13.731s user \t 0m44.996s sys \t 0m3.740s – hefa
오 마이 악. 나는 그 루프 안에 st.close()를 추가하지 않았다. 그 후 소비 된 시간은 다시 실제로 떨어졌습니다. \t 0m6.542s 사용자 \t 0m5.852s sys \t 0m0.848s – hefa