我必須在Matlab中編寫一個程序,因爲它處理大量文件,所以性能非常重要。Matlab:在最後一個字符處分割字符串的最快方法
我必須找到文件名的最後一個文件擴展名並將其分割。
例如file.name.tar.gz
應分爲file.name.tar
和gz
我確定了3種方法來做到這一點,但我不知道哪個是最快的。
1.
javaFilename = java.lang.String(fileName);
lastDot = javaFilename.lastIndexOf('.');
name = char(javaFilename.substring(0, lastDot-1));
ext = char(javaFilename.substring(lastDot+1));
2.
dots = findstr(fileName, '.');
lastDot = dots(length(dots));
name = fileName(1:lastDot-1);
ext = fileName(lastDot+1:end);
3.
[name tempExt] = strtok(fileName, '.');
while tempExt
[temp2 tempExt] = strtok(fileName, '.');
if tempExt
name = strcat(name, '.', temp2);
end
end
ext = temp2(2:end);
我覺得第三個是最差的。但其他方法呢? 你能想出比我描述的方法更快的任何東西嗎?
而不是 'lastDot = dots(length(dots));''您可以使用'lastDot = dots(end);' –
您有數百個文件名需要處理,所以即使這些解決方案中速度最慢的解決方案也需要什麼?比最快的方法還要多一毫秒?這對我來說似乎是一個愚蠢的優化。 – 2012-05-14 09:30:42
正如你在Richantes的回答中看到的那樣,最慢的方法最多花費的時間是最快的2300倍,因此它是有意義的。 –