Mona/malloc


細切れに確保したメモリの速度計測

適当に作った動的配列の速度計測

QEMU上でも一瞬で終了

配列への代入の速度計測

QEMU上でも一瞬で終了

#include <monapi.h>

int MonaMain(List<char*>* pekoe)
{
  for (int n = 20000; n <= 100000; n += 5000)
  {
    int* buf = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) buf[i] = i;
    free(buf);
  }
  return 0;
}

動的配列の速度計測

#include <monapi.h>

void test(int n)
{
  HList<int> buf;
  for (int i = 0; i < n; i++) buf.add(i);
}

int MonaMain(List<char*>* pekoe)
{
  KDate t1, t2;
  for (int i = 20000; i <= 100000; i += 5000)
  {
    syscall_get_date(&t1);
    test(i);
    syscall_get_date(&t2);
    printf("[%d] time: %ds\n", i, (t2.hour * 3600 + t2.min * 60 + t2.sec) - (t1.hour * 3600 + t1.min * 60 + t1.sec));
  }
  return 0;
}

malloc/freeの速度計測

以下のテストではメモリアクセスしていないため実際のページは割り当てられていないためあまり意味のないテストかもしれません。

共通部分

#include <monapi.h>

void test()
{
  // それぞれのテスト内容に応じて変更
}

int MonaMain(List<char*>* pekoe)
{
  KDate t1, t2;
  syscall_get_date(&t1);
  test();
  syscall_get_date(&t2);
  printf("time: %ds\n", (t2.hour * 3600 + t2.min * 60 + t2.sec) - (t1.hour * 3600 + t1.min * 60 + t1.sec));
  return 0;
}

以下test()の中身

割り当てだけ

int count = 50 * 1024;
for (int i = 0; i < count; i++) malloc(1024);
AthlonXP 2100+(1.73GHz), RAM 512MB(実機): 3秒

割り当ててすぐに開放

int count = 50 * 1024;
for (int i = 0; i < count; i++)
{
  void* buf = malloc(1024);
  free(buf);
}
AthlonXP 2100+(1.73GHz), RAM 512MB(実機): 1秒

割り当てて後で正順に開放

int count = 50 * 1024;
void** bufs = (void**)malloc(sizeof(void*) * count);
for (int i = 0; i < count; i++) bufs[i] = malloc(1024);
for (int i = 0; i < count; i++) free(bufs[i]);
AthlonXP 2100+(1.73GHz), RAM 512MB(実機): 3秒

割り当てて後で逆順に開放

int count = 50 * 1024;
void** bufs = (void**)malloc(sizeof(void*) * count);
for (int i = 0; i < count; i++) bufs[i] = malloc(1024);
for (int i = count - 1; i >= 0; i--) free(bufs[i]);
AthlonXP 2100+(1.73GHz), RAM 512MB(実機): 6秒

コメント

コメントはありません。 コメント/Mona/malloc?

お名前:

MENU

now: 1

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 5450, today: 1, yesterday: 1

添付ファイル: filememtest.cpp 976件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:55 (3769d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.044 sec.