本文共 3552 字,大约阅读时间需要 11 分钟。
分别用java和go写了个连接mysql数据库,读取2000多条大乐透彩票数据,并打印出来的程序。
代码如下:
1、java代码
package test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author wangkai * @date 2020-08-11 11:12 */public class StaticTicket { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/test"; static final String USER = "root"; static final String PASS = "root"; public static void main(String[] args) throws Exception { long time1 = System.currentTimeMillis(); Connection conn = null; try{ Class.forName(JDBC_DRIVER); conn = DriverManager.getConnection(DB_URL,USER,PASS); readHistoryRecord(conn); System.out.println("执行完毕 耗时:"+(System.currentTimeMillis()-time1)+"ms"); }finally { if(conn != null) conn.close(); } } /** * 读取历史数据 * @param conn * @throws Exception */ public static void readHistoryRecord(Connection conn) throws Exception { PreparedStatement pst = null; try{ pst = conn.prepareStatement("select id,red1,red2,red3,red4,red5,blue1,blue2 from history_record"); ResultSet resultSet = pst.executeQuery(); int count=0; while(resultSet.next()){ int id = resultSet.getInt("id"); String red1 = resultSet.getString("red1"); String red2 = resultSet.getString("red2"); String red3 = resultSet.getString("red3"); String red4 = resultSet.getString("red4"); String red5 = resultSet.getString("red5"); String blue1 = resultSet.getString("blue1"); String blue2 = resultSet.getString("blue2"); System.out.println(id+" "+red1+" "+red2+" "+red3+" "+red4+" "+red5+" "+blue1+" "+blue2); count++; } System.out.println("记录数:"+count); }catch (Exception e){ conn.rollback(); throw e; }finally { if(pst != null) pst.close(); } }}
2、go语言
package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "strings" "time")func IsErr(err error){ if err != nil{ fmt.Printf("程序错误:%s", err) }}const ( userName = "root" password = "root" ip = "127.0.0.1" port = "3306" dbName = "test")type Users struct { id int red1 string red2 string red3 string red4 string red5 string blue1 string blue2 string}func main(){ time1 := time.Now() //初始化数据库 path := strings.Join([]string{userName, ":", password, "@tcp(",ip, ":", port, ")/", dbName, "?charset=utf8"}, "") db, err := sql.Open("mysql",path) rows, err := db.Query("select * from history_record") IsErr(err) //循环读取结果 var users []Users for rows.Next(){ var user Users //将每一行的结果都赋值到一个user对象中 err := rows.Scan(&user.id,&user.red1, &user.red2, &user.red3, &user.red4, &user.red5, &user.blue1, &user.blue2) if err != nil { fmt.Println(err) } //将user追加到users的这个数组中 users = append(users, user) fmt.Println(user.id, user.red1, user.red2, user.red3, user.red4, user.red5, user.blue1, user.blue2) } fmt.Println("===========================") fmt.Println("数组长度:",len(users)) fmt.Print("耗时:", time.Now().Sub(time1).Seconds())}
个人感觉go语言的语法比较灵活,有些地方是比java要简洁许多。重点来看下执行结果。
用java的代码执行三次的结果:1360ms,1427ms,1376ms; 平均1388ms
用go的代码执行三次的结果:52ms,77ms,45ms; 平均58ms
从这个实验结果可以看出,go的执行效率的确比java快了24倍。这样看来,java还是有些鸭梨山大呀
转载地址:http://xqcdi.baihongyu.com/