网站首页 > 技术文章 正文
版本信息
- 仓颉版本 0.53.18
- Golang版本 1.22.8
- Java版本 corretto-1.8.0_452
源码
仓颉
package cangjie_test
import std.time.MonoTime
import std.sync.SyncCounter
import std.fs.*
main() {
let start = MonoTime.now()
for (i in 1..11) {
write(i)
}
println("耗时: ${(MonoTime.now()-start).toMilliseconds()} ms")
}
func write(index: Int) {
let filePath = "./log_cangjie_no_buffer_${index}.txt"
let rows = 100000
try (file = File(filePath, OpenOption.CreateOrTruncate(true))) {
for (i in 1..rows + 1) {
file.write("${i}\n".toArray())
}
file.flush()
}
}
Java
package java_test;
import java.io.File;
import java.io.FileOutputStream;
public class Main {
public static void main(String[] args) throws Exception {
final long start = System.currentTimeMillis();
for (int i = 1; i < 11; i++) {
write(i);
}
System.out.println(String.format("耗时: %d ms", System.currentTimeMillis() - start));
}
static void write(int index) throws Exception {
final String filePath = "./log_java_no_buffer_" + index + ".txt";
final long rows = 100000; // 写入10W行内容
File file = new File(filePath);
try (FileOutputStream writer = new FileOutputStream(file)) {
for (long i = 1; i < rows + 1; i++) {
writer.write((i + "\n").getBytes());
}
writer.flush(); // 刷入内容
}
}
}
Golang
package main
import (
"fmt"
"os"
"time"
)
func main() {
start := time.Now()
for i := 1; i < 11; i++ {
write(i)
}
fmt.Printf("耗时: %d ms\n", time.Now().Sub(start).Milliseconds())
}
func write(index int) {
filePath := fmt.Sprintf("./log_go_no_buffer_%d.txt", index)
rows := 100000
file, err := os.Create(filePath)
if err != nil {
panic(err)
}
defer file.Close()
for i := 1; i < rows+1; i++ {
file.WriteString(fmt.Sprintf("%d\n", i))
}
}
结果
- Java 结果 1727 ms
- Golang 结果 1611 ms
- 仓颉 非优化结果 1750 ms
- 仓颉 O1优化结果 1643 ms
- 仓颉 O2优化结果 1638 ms
- 仓颉 Oz优化结果 1624 ms
总结
整体而言,Golang相对比较高效,仓颉仍需努力
猜你喜欢
- 2025-07-25 freemark学习(二):freemark的数据类型(1)
- 2025-07-25 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一文搞定
- 2025-07-25 《JAVA编程思想》5分钟速成:第18章(Java的IO系统)
- 2025-07-25 实战SRC漏洞挖掘全过程,流程详细【网络安全】
- 2025-07-25 Tomcat处理HTTP请求流程解析(tomcat cgi)
- 2025-07-25 Java socket详解(转)(java socket编程例子)
- 2025-07-25 全面解读FileUtil与IoUtil工具类的高级功能及应用场景
- 2025-07-25 终于有人把Git最火Java全套详细笔记(吐血放出)资料给分享出来了
- 2025-07-25 《保姆式的详解》Reactor 模式和 Java NIO
- 2025-07-25 基于TCP的网络实时聊天室(socket通信案例)
- 最近发表
-
- Qt编程进阶(63):Qt Quick高级控件的使用
- Qt编程进阶(47):QML鼠标事件处理(qt编程难不难)
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
- Qt使用教程:创建Qt Quick应用程序(三)
- QML性能优化 | 常见界面元素优化(qml布局自适应大小)
- Qt使用教程:创建移动应用程序(二)
- Qt Quick 多媒体开发播放音乐和视频
- Qt使用教程:创建Qt Quick UI表单(三)
- 如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)