我有一个与Alchemy一起使用的 C 项目。该项目有一些我想使用 swfbridge 运行的构建后命令行测试。
这些测试运行,但它们非常慢。问题是他们将一些中等大小的文件(~3MB)读入内存。通过常规 Alchemy 使用相同的文件运行这些相同的测试(例如,不使用 swfbridge 而是使用 AS 的 supplyFile)非常快。
我认为瓶颈是swfbridge。更具体地说,以 swfbridge 加载文件的方式。它读取它们并通过 localhost 连接将它们以 1024 字节块的形式传输到主 alchemy swf。(您可以在 swfbridge.log 中看到这种情况。)
我的问题是:有没有办法让 swfbridge 更有效率?例如,我可以让它使用不同的块大小吗?
这是文件读取代码的示例。如果你给这个代码一个大约 3MB 的文件,它会运行得非常慢。
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
size_t filesize(const char filename[]) {
struct stat stbuf;
if (stat(filename, &stbuf) == -1) {
fprintf(stdout, "file_size: can't find %s\n...\n", filename);
return (-1);
}
return stbuf.st_size;
}
int main(int argc, char **argv) {
const char *filename= argv[1];
size_t size= filesize(filename);
printf("allocating %d bytes \n", size); fflush(stdout);
char *data= (char*)malloc(size);
printf("reading %d bytes \n", size); fflush(stdout);
FILE *file= fopen(filename, "r");
fread(data, size, 1, file);
printf("done \n"); fflush(stdout);
free(data);
fclose(file);
return 0;
}