#ifndef memutil_h_included#define memutil_h_included
// show memory
void showmem(void *, unsigned);
// setup memory
int setmem(void *, const char *);
#endif // memutil_h_included
#include #include #include // display memoryvoid showmem(void *p, unsigned size)
sprintf(&buf[prs], " ");
prs++;
}buf[prs - 1] = '\0';
puts(buf);
}
#include #include #include #include "memutil.h"上面這些**看似可以工作, 然而!!!!!!!!!!!// setup memory
// return:
// 0 -setting succeed
// !0 -setting failed
int setmem(void *p, const char *c)
else
}if ((le = strlen(str)) % 8 != 0)
i = 0;
j = le / 8;
for (; i < j; i++)
((char *)p)[i] = tmp;
}return 0;
}
就在某一天我準備使用它打造乙個二進位制檔案工具的時候, 發生了**!!!!!!! showmem 處理 200 kb居然耗時 80 s !!!!!!!!!!!!!!!!!!!! 當然其中 puts 占用了絕大部分"功勞", 試著優化一下
1 #include 2 #include 3 #include 45showmem.c 效能40+倍提公升( -_-! )6char *showmem(void *p, unsigned size)720
21 printf("
show %p, count %u bits.\n
", p, size * 8
);22
for (i = 0; i < size; i++)
2332 buf[prs++] = '';
33}34 buf[prs - 1] = '\0'
;35puts(buf);
36return
buf;
37 }
1 #include 2 #includesetmem.c 優化調整3 #include 4
5 #include "
memutil.h"6
7//setting memory8//
return:9//
設定完成的位元組數
10//
-1 代表錯誤
11int setmem(void *p, const
char *c)
12 else34}
35 str[i] = '\0'
;3637if ((le = strlen(str)) % 8 != 0)38
4243 i = 0
;44 j = le / 8;45
for (; i < j; i++)
4654 ((char *)p)[i] =tmp;55}
56return
j;57 }
oracle改字型大小 sqlplus改字型
sqlplus font,其值為 terminal sqlplus font size,其值為14,或其他大小的值,如16 18等。問題3 在sql plus中改變字型和字符集 問題描述 有時,sql plus中顯示的資料字型太小,怎樣改變sql plus中顯示的字型大小?問題分析 oracle中所...
電腦改ip怎麼改
電腦改ip怎麼改?首先右鍵開啟電腦螢幕右下方的網路連線的圖示,選擇開啟網路和共享中心。在網路和共享中心當中點選網路連線連線狀態中的本地連線,可以進入本地連線狀態。在本地連線狀態中點選屬性,進入本地連線的管理狀態。在本地連線屬性當中可以看到兩個協議版本,雙擊它們可以看到更改ip位址和dns的介面。通常...
改水道風波
2006 9 6 這幾天倒霉透了!本來專案時間緊張,為了趕進度,自己封網乙個月。可是偏偏這時候改水道,這倒影響不大,可是接下來水道工人沒有把室內閥門裝上 下面就是麻煩 底下的閥門又沒開,這後來才知道。裝好我就上班去了,已經晚了乙個多小時。結果程式發生意外的問題,丟失了一部分程式,後來花近一天時間恢復...