Ich habe ein C-Projekt, das ich mit verwende. Das Projekt hat einige Post-Build-Befehlszeilen-Tests, die ich mit der swfbridge ausführen möchte.swfbridge und große Dateien
Diese Tests laufen, aber sie sind extrem langsam. Das Problem ist, dass sie einige mäßig große Dateien (~ 3 MB) in den Speicher lesen. Das Ausführen derselben Tests mit den gleichen Dateien über reguläre Alchemie (z. B. keine Verwendung von swfbridge, aber Verwendung von supplyFile von AS) ist sehr schnell.
Ich denke, der Engpass ist die swfbridge. Genauer gesagt, in der Art, wie swfbridge Dateien lädt. Er liest sie ein und überträgt sie in 1024 Byte großen Blöcken über die localhost-Verbindung zum Haupt-Alchemy swf. (Sie können dies in der swfbridge.log sehen.)
Meine Frage ist: Gibt es eine Möglichkeit, Swfbridge effizienter zu machen? Kann ich zum Beispiel eine andere Chunk-Größe verwenden?
Hier ist ein Beispiel für den Code zum Lesen von Dateien. Wenn Sie diesem Code eine ~ 3MB Datei geben, wird sehr langsam ausgeführt.
#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;
}