showMem c setMem c 及其改進

2022-05-23 04:39:10 字數 1886 閱讀 8951

#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 memory

void 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 45

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 }

showmem.c 效能40+倍提公升( -_-! )

1 #include 2 #include 

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 }

setmem.c 優化調整

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 這幾天倒霉透了!本來專案時間緊張,為了趕進度,自己封網乙個月。可是偏偏這時候改水道,這倒影響不大,可是接下來水道工人沒有把室內閥門裝上 下面就是麻煩 底下的閥門又沒開,這後來才知道。裝好我就上班去了,已經晚了乙個多小時。結果程式發生意外的問題,丟失了一部分程式,後來花近一天時間恢復...