PIXNET Logo登入

Edison.X. Blog

跳到主文

YouLoveMe() ? LetItBe() : LetMeFree() ;

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 21 週四 201115:22
  • [C &++] 效能測試技巧

自定函式效能測試為常用之一環,吾人日前同一個函式 (log2) 進行了大量之測試 (有15個副函式要測試),由於之前都「亂寫」,故在維護、新增、移除掉副函式時都不方便,於此提供一些基本之技巧與心得。
1. 測試前註明環境規格
這點很重要!加註的東西包含 CPU 規格、RAM 大小、顯卡型號(這個最好加)、Compiler 版臺、Debug/Release mode、是否有開優化 等,上面這些原因都將導致測試結果不一。特別是 Debug / Release / 優化要註明 ,因 Debug / Release 差很多!若不想測試那麼多,那請調成 Release Mode (此為吾人常犯之誤!)
VC 2008 調 release / debug mode :專案 -> 屬性 -> 組態管理員 -> 切換 Release/Debug
VC 2008 調最佳化:專案 -> 屬性 -> 組態屬性 -> C/C++
VC 2008 生成 asm:專案 -> 屬性 -> 組態屬性 -> C/C++ -> 命令列 ,右邊其他選項輸入 /Fas
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(4,000)

  • 個人分類:C/C++ Note
▲top
  • 4月 20 週三 201121:55
  • [C] log2

一開始也沒想到這個問題,但之後認真研究排列組合中的子集合時,卻發現有必要使用到 log2 此函式。在 cmath (math.h) 裡面,提供 log 與 log10 函式,其中 log 即為 ln;但log2 函式卻視 compiler 決定是否支援,吾人手邊之 MSCV 不論哪個版本均無 log2 這個東西,故特撰此文。下述將先探討一些問題,再進行解法與說明。
本文所探討之 log2,以求得整數為主,求得小數之浮點數,日後再予以探討,文中提供約五種方法以說明。
0. 筆者環境
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(6,868)

  • 個人分類:math.h/cmath application
▲top
  • 4月 19 週二 201121:39
  • C/C++ 學習歷程分享

"怎麼學c語言、怎麼挑書、要挑什麼書",這個問題聽過蠻多遍了,提供自己學習 C/C++ 的歷程讓各位參考。以下的說明都是以個人主觀的立場,當然我不是什麼大師,這些都參考就好。由於當初筆者接觸時,就是 C ,若想學其它像是 VB, JAVA, C# 等程式語言,這篇文章仍可給予一些幫助與參考。
1. 請先進修基礎知識
若非本科出身,請先進修以下所敘述的部份再來;如果是本科系出身,請確定以下部份都知道在幹嘛;寫程式並不在乎學歷和背景。學歷和背景不否認的確是提供不錯的學習環境,別被學歷迷思給嚇到了!雖一開始在進入這塊領域,可能會有些挫折感,個人的學習與家教經驗是先學習以下的 topic ,在學習程式語言過程中,對於書中的描述你將更有體會。
 (1) 組成電腦硬體五大單元 - input, output, 控制, 算術邏輯, 記憶單元。這部份通常計概第一章會提到,如果計概課本沒有 - 丟了它,代表它是比較偏 "軟體應用與概述" 的計概,我們需要的不是這種。在這裡必須知道每個單元的功能是在幹嘛。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(45) 人氣(143,135)

  • 個人分類:胡言亂語
▲top
  • 4月 12 週二 201123:52
  • [Poker] 撲克牌遊戲設計介紹

EdisonX-079.png
撲克牌遊戲設計類的程式設計是對初學者非常好的程式練習,若架構沒設計好程式碼寫起來的確會很麻煩,但設計好的話真的沒有什麼大問題。
不當之架構
每份 poker 遊戲設計的架構不應完全相等,但初學的人大多會想,因 poker 是 13 個數字 * 4 個花色,所以會宣告成 int poker[13][4] 或 int poker[4][13],我認為非常不適合!雖顯示上較為方便,但這樣產生一副 poker 在洗牌時、發牌時,分析上也較為麻煩,故不這麼做。
吾人建議:「處理歸處理,顯示歸顯示,把這二個分開來!」
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(9) 人氣(53,352)

  • 個人分類:C/C++ Note
▲top
  • 4月 07 週四 201115:02
  • [Win32] 波形圖

1.bmp
這問題實在看了很多人問,但大多是視窗程式還沒學過,只學到 Console 下之程式設計便問要怎麼畫波形圖。在 Console 下畫不是不能畫,可以說是「不習慣」,也可以說是「不好畫」。
這問題我用四種不同方法解過 -
(1) 直接用 Console Mode 上用 printf / cout 去畫,但這個很麻煩
(2) 調用 Console Function 在 Console Window 上畫
(3) 用 Win32 API 去畫
(4) 用 MFC 去畫
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(1) 人氣(2,780)

  • 個人分類:GDI
▲top
  • 4月 06 週三 201118:26
  • [C] 增進檔案讀取速度

EdisonX-068.png
前言
這系列文章主要是在研究如何增進檔案寫入之速度,若寫檔之次數、大小均沒一定數量時,這系列文章並不會引起興趣,可跳過。但通常讀取次數增多時 (通常 > 50 MB),便會感覺用 fscanf 速度不夠快,於是有要加速之需求,此系列文章便是在探討是否有其它方法使讀寫檔案方式能增快。
本系列文章只探討數值之讀寫,避開了字串之讀寫,若檔案本身單純只為字串所組成,此系列文章並不適用;若檔案本身單純為數值 (整數及浮點數) 所組成,這系列文章便可適用;若字串、數值為參半,仍可做為相當之參考。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(5,317)

  • 個人分類:C/C++ Note
▲top
  • 3月 30 週三 201122:25
  • [C] 增快檔案寫入速度

前言
這系列文章主要是在研究如何增進檔案寫入之速度,若寫檔之次數、大小均沒一定數量時,這系列文章並不會引起興趣,可跳過。但通常寫入次數增多時 (通常 > 50 MB),便會感覺用 fprintf 速度不夠快,於是有要加速之需求,此系列文章便是在探討是否有其它方法使讀寫檔案方式能增快。
本系列文章只探討數值之讀寫,避開了字串之讀寫,若檔案本身單純只為字串所組成,此系列文章並不適用;若檔案本身單純為數值 (整數及浮點數) 所組成,這系列文章便可適用;若字串、數值為參半,仍可做為相當之參考。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(5) 人氣(9,551)

  • 個人分類:C/C++ Note
▲top
  • 3月 30 週三 201117:38
  • [C] 計時器整理

在做效能分析時,最好的方式應是從演算法著手。若演算法都大同小異,接著還要強迫效能提昇,有人建議看 machine code,但不會看 machine code 的話,也只能從實際的測時著手,故計時器在此便顯得重要,本篇文章便提出一些計時的方法與說明。
1. time :
精度只到秒,這應是最不準的計時器。
2. clock:
精度為 1/CLOCKS_PER_SEC,大多系統 CLK_TCK 為 1000,故精度為毫秒。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(4) 人氣(80,156)

  • 個人分類:C/C++ Note
▲top
  • 3月 29 週二 201118:54
  • [W] C 語言截取視窗存成圖片

這是初步,主要展示取得一個 window handle 後,將其 window 存成 bmp 圖檔。至於要存哪個 window,
可再用 FindWindow 與 FindWindowEx 繼續找下去
 
#include <windows.h>
#include <stdio.h>

void CaptureScreen( HWND hwnd, char *filename)
{
HDC hdcWindow;
HDC hdcMemory;
HBITMAP hBitmap;
BYTE *lpvBits;
BITMAPINFO bi;
BITMAPINFOHEADER bih;
BITMAPFILEHEADER bifh;
HANDLE hFile;
DWORD dwBytesWritten = 0;
DWORD dwSize;
int xSize, ySize;
RECT rect;
hdcWindow = GetDC(NULL);

GetWindowRect(hwnd, &rect);

xSize = rect.right - rect.left;
ySize = rect.bottom - rect.top;
hBitmap = CreateCompatibleBitmap(hdcWindow, xSize, ySize);
hdcMemory = CreateCompatibleDC(hdcWindow);
SelectObject(hdcMemory, hBitmap);
BitBlt(hdcMemory, 0, 0, xSize, ySize,
hdcWindow, rect.left, rect.top, SRCCOPY);

bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = xSize;
bih.biHeight = ySize;
bih.biPlanes = 1;
bih.biBitCount = 32;
bih.biCompression = BI_RGB;
bih.biSizeImage = 0;
bih.biXPelsPerMeter = 0;
bih.biYPelsPerMeter = 0;
bih.biClrUsed = 0;
bih.biClrImportant = 0;

dwSize = (((xSize * 32 + 31)/32) * 4 * ySize);
lpvBits = (BYTE*)malloc(dwSize);

bifh.bfType = 0x4D42;
bifh.bfSize = sizeof(BITMAPFILEHEADER) +
sizeof(BITMAPINFOHEADER) + dwSize;
bifh.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) +
(DWORD)sizeof(BITMAPINFOHEADER);
bifh.bfReserved1 = 0;
bifh.bfReserved2 = 0;

bi.bmiHeader = bih;

GetDIBits(hdcMemory, hBitmap, 0, (UINT)ySize,
lpvBits, &bi, DIB_RGB_COLORS);
hFile = CreateFile(filename, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

WriteFile(hFile, (LPSTR)&bifh,
sizeof(BITMAPFILEHEADER), &dwBytesWritten, NULL);
WriteFile(hFile, (LPSTR)&bih,
sizeof(BITMAPINFOHEADER), &dwBytesWritten, NULL);
WriteFile(hFile, (LPSTR)lpvBits,
dwSize, &dwBytesWritten, NULL);

DeleteDC(hdcMemory);
DeleteObject(hBitmap);
CloseHandle(hFile);
free(lpvBits);
ReleaseDC(hwnd, hdcWindow);
}

int main()
{
HWND hwnd = GetConsoleWindow();
HWND hdesktop = GetDesktopWindow();
printf("Hello, World!!");
CaptureScreen(hwnd, "D:\\a.bmp"); /* 截取此 console 視窗圖片 */

/* 將此 console 隱藏,避免截取桌面時截到 console window */
// ShowWindow(hwnd, 0);
CaptureScreen(hdesktop, "D:\\desktop.bmp"); /* 截取目前桌面圖片 */
return 0;
}
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(1,406)

  • 個人分類:GDI
▲top
  • 3月 02 週三 201100:56
  • [C] ASCII 操作

在網路上看到了一些關於 ctype.h 一些 macro,這裡做些摘錄
 #define is_digit(c)     ((c)>='0' && (c)<='9')
 #define is_digit(c)     ((unsigned)(c) - '0' <= 9)
 #define is_alpha(c)     (((c) < CTLESC || (c) > CTLENDARI) && isalpha((unsigned char) (c)))
 #define is_name(c)      (((c) < CTLESC || (c) > CTLENDARI) && ((c) == '_' || isalpha((unsigned char) (c))))
 #define is_in_name(c)   (((c) < CTLESC || (c) > CTLENDARI) && ((c) == '_' || isalnum((unsigned char) (c))))
 #define is_special(c)   ((is_type+SYNBASE)[c] & (ISSPECL|ISDIGIT))
 #define is_special(c)   (is_digit(c)||c=='!'||c=='#'||c=='$'||c=='*'||c=='-')
 #define digit_val(c)    ((c) - '0')
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(1,057)

  • 個人分類:C/C++ Note
▲top
«1...19202131»

個人資訊

edisonx
暱稱:
edisonx
分類:
數位生活
好友:
累積中
地區:

熱門文章

  • (444,528)[C] printf 引數說明
  • (83,007)[C&++] 亂數基本使用
  • (80,156)[C] 計時器整理
  • (58,131)[浮點數] IEEE754 , C/C++ 浮點數誤差
  • (49,918)VBA Procedure 簡述
  • (45,792)VBA 活頁簿(Workbooks)管理
  • (39,457)[C] scanf 引數說明
  • (31,152)[W] 初學者的 windows.h
  • (21,956)bitset 整理
  • (4,982)多測資處理

文章分類

toggle 開發手札 (2)
  • 未實作的想法 (4)
  • 心得筆記 (2)
toggle C/C++ (8)
  • C/C++ Note (52)
  • 亂數 (10)
  • Debug (9)
  • Hidden Features in C (6)
  • OO NOTE (0)
  • 面試題庫 (12)
  • C/C++ FAQ (4)
  • STL Note (3)
toggle 應用軟體/工具 (1)
  • Office (1)
toggle 數值分析 (9)
  • 非線性方程式求解 (10)
  • 矩陣運算 (7)
  • 深入質數 (5)
  • 浮點數 (9)
  • 複數 Complex (2)
  • 積分法 (2)
  • 多項式內差法 (2)
  • 常見關於數 (5)
  • math.h/cmath application (8)
toggle 程式之美 (1)
  • 遊戲之樂 (3)
toggle VB.Net (1)
  • VB.Net Note (1)
toggle 英文 (1)
  • 專題單字 (1)
toggle AutoIt!! (2)
  • AutoIt!! Note (13)
  • Auto-Dll (9)
toggle VBA (4)
  • VBA FAQ (5)
  • VBA Note (9)
  • VBA tec. (1)
  • VBA_Note2 (3)
toggle MFC (1)
  • MFC雜記 (4)
toggle Win32 (8)
  • Process (10)
  • Win32-Console (5)
  • 檔案系統 (1)
  • 音效 (1)
  • 隱喻外掛 (3)
  • System undoc. (0)
  • GDI (2)
  • 記憶體管理 (1)
toggle 環境與Script (4)
  • visual studio (6)
  • 批次檔batch (2)
  • 程式環境架構 (3)
  • Library (3)
toggle 數學整理 (2)
  • 常用公式 (1)
  • 有趣數學 (2)
toggle 演算法 (7)
  • Bit-Hacks (1)
  • AI (13)
  • 大數 (5)
  • 資料結構 (0)
  • 影像 (2)
  • 遞迴-recursive (2)
  • 回溯.列舉.遞迴 (2)
toggle 程設亂語 (1)
  • 胡言亂語 (10)
toggle SmallTalk (1)
  • SmallTalk (27)
  • 未分類文章 (1)

最新文章

  • 轉戰 python
  • [MFC] CArray 注意事項
  • 你真的很狠...
  • [開發手札] tool 整理 <NOTE>
  • [開發手札] vs dll 相容性
  • [開發手札] vc 效率問題
  • [開發手札] 修改 exe 裡面的 constant
  • [開發手札] 受不了 IDE 常當機問題...
  • [Job] Job Journal 130501
  • [面試] some tips

最新留言

  • [25/02/13] 訪客 於文章「[C語言數值分析] cmath / ma...」留言:
    您好,在最后的建表法趋近中, sin_tablePI2[i]...
  • [22/10/28] 訪客 於文章「C/C++ 學習歷程分享...」留言:
    abombterry(at)gmail.com...
  • [22/10/28] 訪客 於文章「C/C++ 學習歷程分享...」留言:
    請問現在還有教c語言嗎? 我有興趣,可否來信告知,謝謝 ...
  • [22/05/31] 五月花 於文章「[Poker] 撲克牌遊戲設計介紹...」留言:
    幫作者推一個 撲克遊戲真的很有趣 個人也是長年愛打牌的其...
  • [22/04/15] 訪客 於文章「[C語言數值分析] 非線性方程式求解 -...」留言:
    原本在搜尋引擎找出一堆 Blog 文章,不知哪幾篇值得花時間...
  • [21/12/27] RIYO 於文章「[Poker] 撲克牌遊戲設計介紹...」留言:
    感覺好酷!! 雖然不懂這些 但身為一個熱愛撲克的玩家覺得...
  • [21/10/01] 訪客 於文章「[GA] 基因演算法(Genetic A...」留言:
    只是想與板主和網友補充交流一下敝人拜讀完的拙見, 我想版主...
  • [21/06/19] 訪客 於文章「[亂數] <細說> C/C++ 亂數基本...」留言:
    請問要怎麼讓檔案第一次執行跑出10個亂數,二次執行跑出20個...
  • [20/09/24] 訪客 於文章「VBA Procedure 簡述...」留言:
    老師 您好 上述撰寫程式的示範,我能理解為何這樣演化,但我...
  • [20/06/25] 訪客 於文章「VBA Procedure 簡述...」留言:
    您好,我想請教一下 我在網路教學裡看到許多老師教製作Exc...

動態訂閱

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣:

留言板