当前位置: 首页 > news >正文

烟台学校网站建设深圳网站建设学校

烟台学校网站建设,深圳网站建设学校,百度网站v认证,怎么查百度收录听说google出品的go语言也是系统开发中常用的,性能到底怎么样,还是老办法,让DeepSeek写个程序跑一下,基于以往的经验,直接让它同时编写有缓冲和无缓冲版本。 package mainimport ("bufio""fmt"&qu…

听说google出品的go语言也是系统开发中常用的,性能到底怎么样,还是老办法,让DeepSeek写个程序跑一下,基于以往的经验,直接让它同时编写有缓冲和无缓冲版本。

package mainimport ("bufio""fmt""os""sort""time"
)// 无缓冲版本
func unbufferedSort(filename string) error {lines, err := readLines(filename)if err != nil {return err}sort.Strings(lines) // Go标准库的优化排序for _, line := range lines {fmt.Println(line) // 无缓冲直接输出}return nil
}// 带缓冲版本 (默认4MB缓冲区)
func bufferedSort(filename string, bufferSize int) error {lines, err := readLines(filename)if err != nil {return err}sort.Strings(lines)// 创建缓冲写入器writer := bufio.NewWriterSize(os.Stdout, bufferSize)defer writer.Flush()for _, line := range lines {_, err := writer.WriteString(line + "\n")if err != nil {return err}}return nil
}// 通用文件读取函数
func readLines(filename string) ([]string, error) {file, err := os.Open(filename)if err != nil {return nil, err}defer file.Close()var lines []stringscanner := bufio.NewScanner(file)for scanner.Scan() {lines = append(lines, scanner.Text())}return lines, scanner.Err()
}func main() {if len(os.Args) < 3 {fmt.Println("Usage:")fmt.Println("  sort_lines <filename> <mode> [bufferSize]")fmt.Println("Modes: unbuffered, buffered")os.Exit(1)}filename := os.Args[1]mode := os.Args[2]start := time.Now()var err errorswitch mode {case "unbuffered":err = unbufferedSort(filename)case "buffered":bufferSize := 4 * 1024 * 1024 // 默认4MBif len(os.Args) > 3 {_, err = fmt.Sscanf(os.Args[3], "%d", &bufferSize)if err != nil {fmt.Printf("Invalid buffer size: %v\n", err)os.Exit(1)}}err = bufferedSort(filename, bufferSize)default:fmt.Println("Invalid mode")os.Exit(1)}if err != nil {fmt.Printf("Error: %v\n", err)os.Exit(1)}elapsed := time.Since(start)fmt.Fprintf(os.Stderr, "Processing time: %s\n", elapsed)
}

编译执行

go/bin/go build -o gosort sort_lines.go
time ./gosort varchar.txt buffered > /dev/null
Processing time: 3.497140997sreal    0m3.554s
user    0m0.621s
sys     0m0.366s
time ./gosort varchar.txt unbuffered > /dev/null
Processing time: 3.720407838sreal    0m4.603s
user    0m0.755s
sys     0m0.474s
time ./gosort varchar.txt buffered > vcc.txt
Processing time: 3.798995799sreal    0m3.855s
user    0m0.681s
sys     0m0.301stime ./gosort varchar.txt buffered 65536 > vcc.txt
Processing time: 3.891683917sreal    0m3.959s
user    0m0.627s
sys     0m0.380stime ./gosort varchar.txt unbuffered > vcc.txt
^Creal    1m26.182s
user    0m3.305s
sys     0m7.983s
nm -D gosort >go.h
nm: gosort: no symbols
nm gosort >go.h

如上所示,带缓冲的版本性能尚可,缓冲区大小影响不大。无缓冲版本只能用离奇来表示,而且go语言默认编译就是优化,也没啥可以调优的。
与Zig语言一样,编译出的是静态版本,看不出调用了哪些系统库函数。

后记
张泽鹏先生提醒我是否在WSL上测试,根据以往的经验WSL的读写性能比较糟糕
改用windows版本,比较正常
C:\d>gosort varchar.txt buffered > vcc.txt
Processing time: 600.3093ms

C:\d>gosort varchar.txt unbuffered > vcc.txt
Processing time: 2.4327929s

http://www.dtcms.com/a/456436.html

相关文章:

  • 网上书店网页设计实训报告江西seo推广方案
  • 网站更改备案好听的网站名称
  • 新氧整形网站开发模版搜索优化引擎
  • 交互网站建设竞价推广sem
  • 网站建设阿里云搭建个人网站一个主页三个子页的html网页
  • 做矿产公司的网站免费推广网店
  • 做动画网站去哪采集什么是互联网公司
  • 东莞网站建设方案维护郑州网站建设
  • 网站seo检测报告长沙零基础学快速建站
  • 网站建设和优化要求做网站的报价
  • 给工厂做英文外贸网站wordpress安全吗
  • 王建设个人网站南昌seo排名扣费
  • 延边网站建设上海企业信用信息公示系统官网
  • 公司域名不变网站做变动北京给公司做网站多少钱
  • discuz建网站网站开发的三个流程
  • 做彩票网站合法吗建筑网红化
  • wordpress换背景seo网站代码优化
  • 找哪些公司做网站什么网站权重快
  • 顺德顺的网站建设域名流量查询工具
  • 弹幕网站开发难么网站免费网站app
  • 福建省建设工程继续教育网站wordpress图片七牛存储
  • 网站建设php文件html文件wordpress 修改链接
  • 微网站定制品牌宣传文案范文
  • 英迈思网站做不下去可以退款吗潍坊做网站建设的公司
  • 在线做炫图网站网站建设300
  • 潍坊企业网站建设外贸营销网站怎么建设
  • 怎样注册电商网站山东东方路桥建设总公司官方网站
  • 制作网站的代码wordpress4.9.6漏洞
  • 隆回网站建设制作网站关闭模板
  • 北京网站设计首选 新鸿儒举报网站建设公司