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. poj3020二分图匹配

    The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...

  2. 让div自适应浏览器窗口居中显示

    今天做 banner 时发现一个问题,就是浏览器窗口水平拉伸时 banner 图未能居中,所以网上找了些资料,自己写了个小 demo html代码: <div class="div1& ...

  3. react native 升级到0.31.0的相关问题 mac xcode开发环境

    cmd + D和cmd + R快捷键没有反应 0.31.0版本换了一种加载方式,通过修改userDefaults达到debug目的 [userDefaults setObject:@"127 ...

  4. linux下vim编辑器使用

    VIM - Vi IMproved: vim是vi编辑器的升级版,是linux下标准的编辑器,具有程序编写能力,可以根据字体颜色辨别语法的正确性,方便程序的设计. 使用: # vim [OPTION] ...

  5. Java Map List 的使用

    项目中有一个需求是将年月分两行显示: java后台代码 创建一个demo,使用Map List 拆分年月: package demo; import java.util.ArrayList;impor ...

  6. LeetCode:60. Permutation Sequence,n全排列的第k个子列

    LeetCode:60. Permutation Sequence,n全排列的第k个子列 : 题目: LeetCode:60. Permutation Sequence 描述: The set [1, ...

  7. 【WPF】学习笔记(三)——这个家伙跟电子签名板有个约定

    这篇博客依旧是以电子签名板为基础而展开的,主要是对前文([WPF]学习笔记(一)--做一个简单的电子签名板)存在的部分问题进行解释,以及部分小功能的添加.由于这篇博客是建立在学习笔记一的基础上的,所以 ...

  8. vue1.0和vue2.0的区别(二)

    这篇我们继续之前的vue1.0和vue2.0的区别(一)继续说 四.循环 学过vue的同学应该知道vue1.0是不能添加重复数据的,否则它会报错,想让它重复添加也不是不可以,不过需要定义别的东西 而v ...

  9. PHP平台CMS系统Drupal小试身手----安装教程

    最近一直在研究基于Asp.Net MVC的CMS---Orchard,忽然新血来潮,看看多年不看的PHP平台的CMS,那好,就拿Drupal试试身手吧. 第一大招: 环境配置 + 安装. 1.环境配置 ...

  10. spring-定时器(1)

    先看一个例子 一.demo1(MethodInvokingJobDetailFactoryBean) 1.要执行业务类 public class BusinessReport { public voi ...