#include "kbcl0.h"
#include <stdio.h>
int main()
{
char *s = (char *) kreadFileA("kbcl0.h", "rb", 1 + 2);
KSizPtr sp;
while (*s != '\0')
sp.addPtr(kcutCrLfM(ksgetsA(&s)));
for (int i = sp.s / sizeof (char *) - 1; i >= 0; i--)
puts((char *) sp.getPtr(i));
return 0;
}| (1)片方向リスト、KPtrPool使用 | (2)KSizPtr、初期サイズ4バイト(デフォルト) | (3)KSizPtr、初期サイズを巨大にしてmemcpyが発生しないようにした | (2) / (1) | |
| データを 4バイトずつ追加 | 3.755秒 | 2.623秒 | 2.320秒 | 0.699倍 |
| データを 8バイトずつ追加 | 4.392秒 | 3.802秒 | 2.594秒 | 0.866倍 |
| データを12バイトずつ追加 | 5.227秒 | 6.506秒 | 3.734秒 | 1.245倍 |
| データを16バイトずつ追加 | 6.161秒 | 7.478秒 | 4.723秒 | 1.214倍 |
| データを24バイトずつ追加 | 8.046秒 | 12.653秒 | 6.637秒 | 1.573倍 |
int my_malloc_n = 0;
void *my_malloc(int size)
{
void *p = malloc(size);
if (p == NULL) {
fprintf(stdout, "my_malloc: out of memory\n");
exit(1);
}
my_malloc_n++;
return p;
}
void my_free(void *p)
{
if (p != 0) {
free(p);
my_malloc_n--;
}
}| コメント | お名前 | NameLink | |