2015年5月10日 星期日

[記錄] Objective-c 的正規表示式問題排除.



經過網友的提醒發現,正規表示式裡頭存在著重複的規則,所以就把它移掉來測試一下。
因為以實況來說,我已經用 c 重新改寫了本來那個 method 的運作流程,也沒好掉這麼多地時間;而且一併拿來進行測試, test unit & ouput report 我就懶得打了 ^^"

讓數據證明一切,用看的吧 ~

test unit :

output report :

可以比較出來,如果正規表示式條件沒有調整到很正確的狀況時,Objective-C 的處理時間會比 C 處理的時間還要多出許多。
( 因為 C 的語法也經過一定程度判斷簡化了 )


用 c 的語法改寫正規表示式檢查方式的 code :


※ 其中的

    regmatch_t                      matches[1];
    // ...
    result                          = regexec( &regular, [self cStringUsingEncoding: NSASCIIStringEncoding], 1, matches, 0 );

因為這個這個函式的功能只判斷,字串是否符合該正規表示式,所以整體運算流程只需要執行個一次就好了,也不需要讓 regexec 這個函式反覆進行判斷


PS: 當我在把函式中的 character set 調整成 UTF8 之後, c 的處理時間有些微的上漲了 0.001 秒 XD



沒有留言:

張貼留言