博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个小示例,对比下go和java
阅读量:4035 次
发布时间:2019-05-24

本文共 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/

你可能感兴趣的文章
补充自动屏蔽攻击ip
查看>>
谷歌走了
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
让我做你的下一行Code
查看>>
浅析:setsockopt()改善程序的健壮性
查看>>
关于对象赋值及返回临时对象过程中的构造与析构
查看>>
VS 2005 CRT函数的安全性增强版本
查看>>
SQL 多表联合查询
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
C++中使用Mongo执行count和distinct运算
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
关于AIS编码解码的两个小问题
查看>>
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>