2 回答
TA贡献1993条经验 获得超5个赞
在Java中连接比PHP慢得多,所以我在数据库连接之后指定了开始时间。然而,这并不是故事的全部。编译器也没有像@Thomas建议的那样优化代码。我创建了该项目的导出JAR并进行了一些修改。新时代更加合理,将Java的执行时间减少到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贡献1818条经验 获得超8个赞
您可以尝试:
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") ) );
}
这将在一次调用中分配所需的所有存储,而不是以增量方式为每行添加存储。
永远不要低估php的性能和功能。WEB 的一半是用 php 开发的,这是有原因的。
添加回答
举报