go 测试sort性能
package main import "fmt"
import "os"
import "flag"
import "bufio"
import "io" import "time"
import "strconv"
//import "algorithm/qsort" import "algorithm/bubblesort" var infile *string = flag.String("i","unsorted.dat","file container unsorted")
var outfile *string =flag.String("o","sorted.dat","file container sorted")
var algorithm *string =flag.String("a","bubblesort","sort algortihm") func readValue (infile string)(values []int,err error){
file,err := os.Open(infile)
if err != nil{
fmt.Println("open failed")
return
}
defer file.Close()
br := bufio.NewReader(file) values =make([]int ,)
for{
line,isprefix,err1 := br.ReadLine()
if err1 !=nil{
if err1 !=io.EOF{
err=err1
}
fmt.Println("readline error")
// return
break
}
if isprefix {
fmt.Println("too long")
return
}
str:= string(line) value ,err2 :=strconv.Atoi(str) if err2 !=nil{
err2=err
fmt.Println("conv failed")
return
}
values = append(values,value)
}
return }
func writeValue(values []int ,outfile string) error{
file,err1 :=os.Create(outfile)
if err1 !=nil {
//err=err1
fmt.Println("write is errr")
return err1
}
defer file.Close() for _,value := range values{
str :=strconv.Itoa(value)
file.WriteString(str+"\n")
}
return nil
func main(){
flag.Parse()
if infile != nil{
fmt.Println("inline =",*infile,"outfile =:",*outfile,"algorithm =: ",*algorithm)
}
values,err := readValue(*infile) if err ==nil{
t1 :=time.Now()
// switch *algorithm {
// case "qsort":
// qsort.Quick(values)
// case bubblesort: bubblesort.BubbleSort(values)
// default:
// fmt.Println("switch error")
// }
t2:=time.Now()
fmt.Println("sort time is %d",t2.Sub(t1))
// fmt.Println(values)
writeValue(values,*outfile)
}else{
fmt.Println("readLIne is ERROR")
}
}
上面的是src中的主文件
algorithm中的主要是排序算法,我这里只有bubblesort,额外还可以有其他的,对于测试文件,我们只需要写_test.go就可以了,
我们可以在主程序中,使用swith进行选择,但是这里的swith遇到一个问题,就是当go build sorter的时候,总是报without selecor的错误,这个问题现在我还没有解决,所有我注释掉了,我们需要在简历一个unsortred.dat的文件,至于输出文件,通过os.Create
自己就创建了。
go build algorithm/bubblesort
go install algorithm/bubblesort
go build sorter生出二进制文件
./sorter -i unsorted -o sorted

package bubblesort
func BubbleSort( values [] int){
flag :=false
for i := ;i<len(values)- ;i++{
flag =false
for j:= ;j<len(values)-i- ;j++{
if values[j+] <values[j]{
values[j+],values[j] =values[j],values[j+]
flag=true
}
}
if flag==false{
break
}
}
}
package bubblesort
import "testing"
func TestBubbleSort1(t *testing.T){
values :=[]int{,,,,}
BubbleSort(values)
if values[] != || values[]!= || values[] != || values[] != ||values[] !={
t.Error("bubblesor is falied ",values)
}
}
go 测试sort性能的更多相关文章
- 使用SQLIO测试磁盘性能
SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...
- hdparm测试硬盘性能
<1>Centos安装hdparm测试硬盘性能 一.安装hdparm yum install hdparm -y Linux学习,http:// linux.it.net.cn 二.评估读 ...
- Android IOS WebRTC 音视频开发总结(五六)-- 如何测试网络性能?
本文主要介绍如何测试网络性能,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 网络性能直接决定了视频通话效果,比如qq,很多时候我们我们觉得通 ...
- Apache JMeter--网站自动测试与性能测评
Apache JMeter--网站自动测试与性能测评 2013-02-28 15:48:05 标签:Jmeter From:http://bdql.iteye.com/blog/291987 出于学习 ...
- iozone测试磁盘性能
什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...
- 使用iozone测试磁盘性能
IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...
- 【转】dd命令详解及利用dd测试磁盘性能
dd命令详解及利用dd测试磁盘性能 linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...
- Linux 中使用 dd 测试磁盘性能
翻译自 : Linux I/O Performance Tests using dd 基本说明 dd 可以用来做简单的低级别复制文件. 这样做, 一般都是可一直直接访问设备文件. 需要说明的是, 错误 ...
- YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似
转自:http://blog.sina.com.cn/s/blog_48c95a190102v9kg.html YCSB(Yahoo! Cloud Serving Benchmark) ...
随机推荐
- poj3020二分图匹配
The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...
- 让div自适应浏览器窗口居中显示
今天做 banner 时发现一个问题,就是浏览器窗口水平拉伸时 banner 图未能居中,所以网上找了些资料,自己写了个小 demo html代码: <div class="div1& ...
- react native 升级到0.31.0的相关问题 mac xcode开发环境
cmd + D和cmd + R快捷键没有反应 0.31.0版本换了一种加载方式,通过修改userDefaults达到debug目的 [userDefaults setObject:@"127 ...
- linux下vim编辑器使用
VIM - Vi IMproved: vim是vi编辑器的升级版,是linux下标准的编辑器,具有程序编写能力,可以根据字体颜色辨别语法的正确性,方便程序的设计. 使用: # vim [OPTION] ...
- Java Map List 的使用
项目中有一个需求是将年月分两行显示: java后台代码 创建一个demo,使用Map List 拆分年月: package demo; import java.util.ArrayList;impor ...
- LeetCode:60. Permutation Sequence,n全排列的第k个子列
LeetCode:60. Permutation Sequence,n全排列的第k个子列 : 题目: LeetCode:60. Permutation Sequence 描述: The set [1, ...
- 【WPF】学习笔记(三)——这个家伙跟电子签名板有个约定
这篇博客依旧是以电子签名板为基础而展开的,主要是对前文([WPF]学习笔记(一)--做一个简单的电子签名板)存在的部分问题进行解释,以及部分小功能的添加.由于这篇博客是建立在学习笔记一的基础上的,所以 ...
- vue1.0和vue2.0的区别(二)
这篇我们继续之前的vue1.0和vue2.0的区别(一)继续说 四.循环 学过vue的同学应该知道vue1.0是不能添加重复数据的,否则它会报错,想让它重复添加也不是不可以,不过需要定义别的东西 而v ...
- PHP平台CMS系统Drupal小试身手----安装教程
最近一直在研究基于Asp.Net MVC的CMS---Orchard,忽然新血来潮,看看多年不看的PHP平台的CMS,那好,就拿Drupal试试身手吧. 第一大招: 环境配置 + 安装. 1.环境配置 ...
- spring-定时器(1)
先看一个例子 一.demo1(MethodInvokingJobDetailFactoryBean) 1.要执行业务类 public class BusinessReport { public voi ...