gpt4 book ai didi

c - 与 C 相比,为什么 Go 向文件写入字节很慢

转载 作者:行者123 更新时间:2023-12-02 07:22:17 24 4
gpt4 key购买 nike

我刚刚发现 Go 向文件写入字节很慢。

我想创建一个 10mb 的文件。 Go 几乎需要 1 分钟才能完成,但在 C 中不到 5 秒。

这是 Go 代码:

package main

import (
"fmt"
"os"
)

func main() {
f, _ := os.Create("./src/test/test.txt")
count := int(1.024e7)
for i := 0; i < count; i++ {
f.Write([]byte{byte('a' + i%24)})
}
f.Close()
fmt.Println("ok")
}

还有C:

#include <stdio.h>

int main()
{
FILE *fp=fopen("data.txt","w");
int size=1.024e7;
for(int i=0;i<size;i++)
putc('a'+i%24,fp);
fclose(fp);
printf("ok");
return 0;
}

最佳答案

无意义的微基准测试产生无意义的结果。

<小时/>

Go:

package main

import (
"bufio"
"fmt"
"os"
)

func main() {
f, _ := os.Create("tmp/sotest/test.txt")
w := bufio.NewWriter(f)
count := int(1.024e7)
for i := 0; i < count; i++ {
w.Write([]byte{byte('a' + i%24)})
}
w.Flush()
f.Close()
fmt.Println("ok")
}

输出:

ok
real 0m0.159s
user 0m0.160s
sys 0m0.004s
<小时/>

C:

#include <stdio.h>

int main()
{
FILE *fp=fopen("data.txt","w");
int size=1.024e7;
for(int i=0; i<size; i++)
putc('a'+i%24,fp);
fclose(fp);
printf("ok");
return 0;
}

输出:

ok
real 0m0.058s
user 0m0.045s
sys 0m0.004s

关于c - 与 C 相比,为什么 Go 向文件写入字节很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com