Golang 获得文件名最快的代码实现方式比较
2017-06-22 11:48
281 查看
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
"time"
)
//获得文件名最快的代码实现方式比较
func main() {
filename := "/root/Desktop/模特唐嘉灵2.jpg"
//方案一
startTime1 := time.Now()
for i := 0; i < 1000000; i++ {
_ = filepath.Base(filename)
}
endTime1 := time.Now()
//方案二
startTime2 := time.Now()
for i := 0; i < 1000000; i++ {
start := strings.LastIndex(filename, string(os.PathSeparator)) + 1
data := []rune(filename)
_ = string(data[start:])
}
endTime2 := time.Now()
//方案三
startTime3 := time.Now()
for i := 0; i < 1000000; i++ {
arr := strings.Split(filename, string(os.PathSeparator))
_ = arr[len(arr)-1]
}
endTime3 := time.Now()
var duration1 time.Duration = endTime1.Sub(startTime1)
var second1 float64 = duration1.Seconds()
var duration2 time.Duration = endTime2.Sub(startTime2)
var second2 float64 = duration2.Seconds()
var duration3 time.Duration = endTime3.Sub(startTime3)
var second3 float64 = duration3.Seconds()
//输出运行耗时:
fmt.Println(second1) //方案一
fmt.Println(second2) //方案二
fmt.Println(second3) //方案三
}
控制台打印输出百万次获得文件名称的需要的时间:
2017/06/22 11:44:01 debugger.go:97: launching process with args: [/root/code/go/src/contoso.org/hello/debug]
API server listening at: 127.0.0.1:2345
2017/06/22 11:44:01 debugger.go:505: continuing
0.025708834 //方案一 ,它最快
0.240723813 //方案二 ,它最慢
0.210655292 //方案三
import (
"fmt"
"os"
"path/filepath"
"strings"
"time"
)
//获得文件名最快的代码实现方式比较
func main() {
filename := "/root/Desktop/模特唐嘉灵2.jpg"
//方案一
startTime1 := time.Now()
for i := 0; i < 1000000; i++ {
_ = filepath.Base(filename)
}
endTime1 := time.Now()
//方案二
startTime2 := time.Now()
for i := 0; i < 1000000; i++ {
start := strings.LastIndex(filename, string(os.PathSeparator)) + 1
data := []rune(filename)
_ = string(data[start:])
}
endTime2 := time.Now()
//方案三
startTime3 := time.Now()
for i := 0; i < 1000000; i++ {
arr := strings.Split(filename, string(os.PathSeparator))
_ = arr[len(arr)-1]
}
endTime3 := time.Now()
var duration1 time.Duration = endTime1.Sub(startTime1)
var second1 float64 = duration1.Seconds()
var duration2 time.Duration = endTime2.Sub(startTime2)
var second2 float64 = duration2.Seconds()
var duration3 time.Duration = endTime3.Sub(startTime3)
var second3 float64 = duration3.Seconds()
//输出运行耗时:
fmt.Println(second1) //方案一
fmt.Println(second2) //方案二
fmt.Println(second3) //方案三
}
控制台打印输出百万次获得文件名称的需要的时间:
2017/06/22 11:44:01 debugger.go:97: launching process with args: [/root/code/go/src/contoso.org/hello/debug]
API server listening at: 127.0.0.1:2345
2017/06/22 11:44:01 debugger.go:505: continuing
0.025708834 //方案一 ,它最快
0.240723813 //方案二 ,它最慢
0.210655292 //方案三
相关文章推荐
- ASP中用ajax方式获得session的实现代码
- 算法代码实现之归并排序,Golang(Go语言)实现,自顶向下与自底向上两种方式
- 用DELPHI代码的方式清理cookies,如何实现,比较急,高分送出。分不够,再给加,顶者有分
- Java、Scala、Go以相同方式实现快速排序代码量比较
- 比较购物网站中比较代码如何实现
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- 单线程和多线程访问数据库性能比较二实现代码部分(oracle 数据库)
- Asp.Net 获得焦点的方式如下列代码:
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- 网页刷新代码-刷新页面实现方式总结篇
- 链接地址无文件名的实现方式----URL重写技术http://hi.baidu.com/fuyujiang/blog/item/fdf8830aed20923ab0351d12.html
- C++ + WMI + DDK 实现获得显卡信息 代码
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- 重构-代替类型代码几中方式的比较(Replace type code with ...)
- 几个开源项目实体层实现方式比较
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)