一个小示例,对比下go和java

分别用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 main

import (
	"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还是有些鸭梨山大呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值