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性能的更多相关文章

  1. 使用SQLIO测试磁盘性能

    SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...

  2. hdparm测试硬盘性能

    <1>Centos安装hdparm测试硬盘性能 一.安装hdparm yum install hdparm -y Linux学习,http:// linux.it.net.cn 二.评估读 ...

  3. Android IOS WebRTC 音视频开发总结(五六)-- 如何测试网络性能?

    本文主要介绍如何测试网络性能,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 网络性能直接决定了视频通话效果,比如qq,很多时候我们我们觉得通 ...

  4. Apache JMeter--网站自动测试与性能测评

    Apache JMeter--网站自动测试与性能测评 2013-02-28 15:48:05 标签:Jmeter From:http://bdql.iteye.com/blog/291987 出于学习 ...

  5. iozone测试磁盘性能

    什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...

  6. 使用iozone测试磁盘性能

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  7. 【转】dd命令详解及利用dd测试磁盘性能

    dd命令详解及利用dd测试磁盘性能   linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...

  8. Linux 中使用 dd 测试磁盘性能

    翻译自 : Linux I/O Performance Tests using dd 基本说明 dd 可以用来做简单的低级别复制文件. 这样做, 一般都是可一直直接访问设备文件. 需要说明的是, 错误 ...

  9. YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似

    转自:http://blog.sina.com.cn/s/blog_48c95a190102v9kg.html         YCSB(Yahoo! Cloud Serving Benchmark) ...

随机推荐

  1. poj2653线段相交判断

    Stan has n sticks of various length. He throws them one at a time on the floor in a random way. Afte ...

  2. 使用Dotfuscator加密混淆程序以及如何脱壳反编译

    混淆演示 首先介绍如何使用Dotfuscator对.net程序加密码混淆/加壳 C#或vb.net编写的应用程序或DLL. 这里随便创建了一个C#的命令行控制台程序.程序很简单,对当前的时间进行了AE ...

  3. JavaScript面向对象的理解

    JavaScript面向对象的理解  笔记链接: http://pan.baidu.com/s/1c0hivuS 1:JavaScript 中分两种对象,函数对象和普通对象new Function() ...

  4. java之反射

    初学反射,也是第二次写博客了把,就简单记录一下. Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对 ...

  5. XSHELL工具上传文件到Linux以及下载文件到本地(Windows)

    Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz.首先你的Linux上需要安装安装lrzsz工具包,(如果没有安装请执行以下命令,安装 ...

  6. WebSocket实战

    前言 互联网发展到现在,早已超越了原始的初衷,人类从来没有像现在这样依赖过他:也正是这种依赖,促进了互联网技术的飞速发展.而终端设备的创新与发展,更加速了互联网的进化: HTTP/1.1规范发布于19 ...

  7. jmeter IP欺骗功能实现

    使用过loadrunner的同学,应该都了解有个IP欺骗功能,jmeter遇到类似需求怎样实现呢? 环境:windows7,jdk1.8,jmeter3.1 使用IP欺骗功能前提是本地有多个可用IP, ...

  8. chroot jail

    注意,原标题是:Linux Virtualization using Chroot Jail,我实在不知道怎么翻译,所以,自作主张,选了chroot jail作为标题.原文地址 chroot jail ...

  9. 导出CSV,导出excel数字过长显示科学计数法解决方案

    再导出CSV表格时发现数字超过一定长度后会缩写成科学计数法,对于手机号和身份证就比较尴尬了. 在网上找了一下,大部分都是加"'"将数字转换为字符串,但是纠结于导出的数字前面有个单引 ...

  10. jsp的自定义标签 控制jsp内容显示

    引入方式示例 <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> tld文件 <?x ...