經過網友的提醒發現,正規表示式裡頭存在著重複的規則,所以就把它移掉來測試一下。
因為以實況來說,我已經用 c 重新改寫了本來那個 method 的運作流程,也沒好掉這麼多地時間;而且一併拿來進行測試, test unit & ouput report 我就懶得打了 ^^"
讓數據證明一切,用看的吧 ~
test unit :
output report :
可以比較出來,如果正規表示式條件沒有調整到很正確的狀況時,Objective-C 的處理時間會比 C 處理的時間還要多出許多。
( 因為 C 的語法也經過一定程度判斷簡化了 )
用 c 的語法改寫正規表示式檢查方式的 code :
※ 其中的
regmatch_t matches[1];
// ...
result = regexec( ®ular, [self cStringUsingEncoding: NSASCIIStringEncoding], 1, matches, 0 );
因為這個這個函式的功能只判斷,字串是否符合該正規表示式,所以整體運算流程只需要執行個一次就好了,也不需要讓 regexec 這個函式反覆進行判斷PS: 當我在把函式中的 character set 調整成 UTF8 之後, c 的處理時間有些微的上漲了 0.001 秒 XD
沒有留言:
張貼留言