[英]performance of string.tolowercase on a lower case string
我想知道toLowerCase
對String的影響。 這里的字符串長度可以變化到50個字符,也可以是小寫字母。
在我們的例子中,我們需要檢查用戶輸入的字符串,然后以小寫形式將該輸入保存在數據庫中,並在大卷上進行檢查。
因此,我應首先檢查大小寫不匹配,然后直接應用String.toLowerCase
OR,或者在每個字符串上應用String.toLowerCase()
,包括小寫字符串。
有沒有更好的方法來處理這種情況,牢記性能?
提前致謝。
在開始構建新字符串之前,Openjdk會在內部檢查是否存在任何非小寫字符:
SUN Java以類似的方式工作(請參閱下面的評論),因此您無需進行額外的檢查。
您應該能夠使用==
仔細檢查(在小型測試程序中),即使沒有必要,您的Java版本是否會分配新的字符串:
String test = "all lower case";
if (test == test.toLowerCase()) {
System.out.println("The strings are the same object, " +
"so toLowerCase performs a check before allocating a new one.");
} else {
System.out.println("A new string object is created even when not needed.");
}
如果你選擇檢查上面的那些你必須執行for loop + if condition
和那么難看所以我認為最好與toLowercase()
一起使用所有字符串+ toLowercase()
實際上為你執行這些操作
在我的職業生涯中,我不得不解析一些大文件(放氣后> 1GB)。 根據我的經驗,直接調用toLowercase()
而不是進行檢查然后調用它是個好主意。
String.toLowerCase經過優化,僅在必要時才創建新的String,請嘗試此操作
String s = "date";
System.out.print(s == s.toLowerCase());
產量
true
我認為允許數據庫使用觸發器進行轉換可能比在java中執行字符串操作更好。 我沒有對此進行測試,但您可能會嘗試查看是否存在性能差異。
在表上定義觸發器 :
CREATE TRIGGER lcase_insert BEFORE INSERT ON my_table FOR EACH ROW
SET NEW.language = LOWER(NEW.language);
CREATE TRIGGER lcase_update BEFORE UPDATE ON my_table FOR EACH ROW
SET NEW.language = LOWER(NEW.language);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.