2 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
在Java中連接比PHP慢得多,所以我在數(shù)據(jù)庫(kù)連接之后指定了開(kāi)始時(shí)間。然而,這并不是故事的全部。編譯器也沒(méi)有像@Thomas建議的那樣優(yōu)化代碼。我創(chuàng)建了該項(xiàng)目的導(dǎo)出JAR并進(jìn)行了一些修改。新時(shí)代更加合理,將Java的執(zhí)行時(shí)間減少到0.228579051
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3321/database?user=root&password=password");
Long startTime = System.nanoTime();
Statement stmt = conn.createStatement();
StringBuilder stringBuilder = new StringBuilder();
ResultSet rs = stmt.executeQuery( "SELECT * FROM contacts" );
ArrayList<Entity> contacts = new ArrayList<Entity>(rs.getRow());
while( rs.next() ){
contacts.add( new Entity( rs.getString("firstname"), rs.getString("lastname") ) );
}
for( int i = 0; i < 5; i++ ){
contacts.forEach( contact -> stringBuilder.append("huzzah ").append(contact.getFirstName()).append(" ").append(contact.getLastName()).append("\n\r"));
}
Long endTime = System.nanoTime();
System.out.print( stringBuilder.toString() );
Long elapsedTime = ( endTime - startTime );
double seconds = (double) elapsedTime / 1_000_000_000.0;
System.out.println( "Total Execution Time: " + seconds );

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以嘗試:
ResultSet rs = stmt.executeQuery( "SELECT * FROM contacts" );
ArrayList<Entity> contacts = new ArrayList<Entity>(rs.getRow());
while( rs.next() ){
contacts.add( new Entity( rs.getString("firstname"), rs.getString("lastname") ) );
}
這將在一次調(diào)用中分配所需的所有存儲(chǔ),而不是以增量方式為每行添加存儲(chǔ)。
永遠(yuǎn)不要低估php的性能和功能。WEB 的一半是用 php 開(kāi)發(fā)的,這是有原因的。
添加回答
舉報(bào)