[英]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.