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. 蓝桥杯-有理数类-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  2. redis持久化快速回忆手册

    Redis提供的持久化机制: 1). RDB持久化:该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘. 2). AOF持久化:该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服 ...

  3. win10 64位下装Virtual Box安装Linux(centOS)配置联网

    第一步:安装VritualBox 百度"VritualBox"下载安装即可: 第二步:下载Linux镜像系统并安装 这里写出我参照的博客,很详细,我就不累赘了! 原文地址:http ...

  4. JAVA的Condition详解

    Condition 将 Object 监视器方法(wait().notify()和notifyAll())分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 s ...

  5. JAVA并发编程实战---第三章:对象的共享(2)

    线程封闭 如果仅仅在单线程内访问数据,就不需要同步,这种技术被称为线程封闭,它是实现线程安全性的最简单的方式之一.当某个对象封闭在一个线程中时,这种方法将自动实现线程安全性,即使被封闭的对象本生不是线 ...

  6. php中for循环的应用1

    for 循环是 PHP 中最复杂的循环结构.它的行为和 C 语言的相似.在PHP中使用的是执行相同的代码集的次数. for 循环的语法是: for (expr1; expr2; expr3)state ...

  7. asp.net已流的方式下载文件

    string filePath = context.Server.MapPath("~/" + uploadFolder+"/"+file_name);//路径 ...

  8. SpringMVC 3.2集成Spring Security 3.2

    参考:http://www.cnblogs.com/Beyond-bit/p/springmvc_and_springsecurity.html SpringMVC 3.2集成Spring Secur ...

  9. 【面向对象设计原则】之依赖倒置原则(DIP)

    依赖倒转原则(Dependency Inversion  Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象.换言之,要针对抽象(接口)编程,而不是针对实现细节编程. 开闭原则( ...

  10. 一个gif远程crash你的微信!

    测试了一下iPhone6,iPhone7不同版本的 iOS上,收到某个天线宝宝的gif,最新版本的微信都会挂. demo视频:演示视频 通过 crash log可以看到微信最新的6.5.8版本在打开 ...