这两种语言中二进制I/O库的性能有多好>我正在考虑重新编写一个丑陋(但非常快)的C++代码,它使用标准的fread和fwrite函数处理大约5-10GB的二进制文件.对于F#和Haskell中的优化实现,我应该期待什么减速因子?
编辑:这是计算零字节的C实现(堆上分配的缓冲区).
#include <stdio.h>
#include <stdlib.h>
#define SIZE 32*1024
int main(int argc, char* argv[])
{
FILE *fp;
char *buf;
long i = 0, s = 0, l = 0;
fp = fopen(argv[1], "rb");
if (!fp) {
printf("Openning %s failed\n", argv[1]);
return -1;
}
buf = (char *) malloc(SIZE);
while (!feof(fp)) {
l = fread(buf, 1, SIZE, fp);
for (i = 0; i < l; ++i) {
if (buf[i] == 0) {
++s;
}
}
}
printf("%d\n", s);
fclose(fp);
free(buf);
return …Run Code Online (Sandbox Code Playgroud) 我查看了boost的mpl :: string,但似乎没有一种简单的方法可以将字符串文字转换为基于单引号整数的mpl :: string格式.我想要做的是在编译时使用编译时字符串生成一些简单数据结构的XML实现.我正在努力让宏自己生成结构并在其中插入一个包含所述XML字符串的常量"meta"字段.