![]() |
1
2
我不能确切地说这是否有助于你的表现。它将取决于您使用了多少个字符串,以及您创建这些字符串的实例的频率。截取通常是自动完成的,因此显式检查字符串是否被截取实际上会增加开销并降低性能。当涉及到内存使用时,内部字符串肯定可以使用较少的内存。 如果你真的想使用弦乐节间,有一些更好的方法来实现它。首先,我将把您的元素名放在一个包含公共字符串常量的静态类中。在程序源代码中找到的任何字符串文本都是绝对和自动的。当您的应用程序被加载时,这样的字符串被加载到实习生池中。如果不能将字符串定义为编译时实习生准备的常量,那么我只需调用 string.intern(…) 而不是做完整的三元表达式 字符串。IsInterned(…)?……:string.intern(…) . intern方法将自动检查字符串是否被实习生,如果是,则返回实习生版本,否则将把字符串添加到实习生池中,如果不是,则返回。无需手动检查就可以了。 同样,我不能说手动插入字符串是否会提高性能。如果您使用常量,它们将以最理想的方式自动为您实习,这是改善定期重用字符串的性能和内存使用的最佳方法。我真诚地建议您远离手动实习,让编译器和运行时为您处理优化。 |
![]() |
2
1
当然,插入字符串有助于实现性能,但正如@jrista所说,“如果您使用常量,它们将自动为您……进行实习生操作”。 这里有一些文章可以帮助你, Optimizing C# String Performance 总结:共享内存,C维护一个称为“Intern表”的东西。这是当前引用的字符串列表。如果创建了一个新的字符串,则检查intern表。如果字符串已经在其中,那么两个变量将指向由intern表维护的同一内存块。 http://blog.cumps.be/string-concatenation-vs-memory-allocation/ |
![]() |
Sweepy Dodo · JSON lite的格式化 5 月前 |
![]() |
giantjenga · 优化整数向量到二进制向量的转换 6 月前 |
![]() |
Zegarek · Postgresql递归查询未提供预期结果 7 月前 |
![]() |
Joe · 为什么这两个查询之间的性能存在如此大的差异? 10 月前 |
![]() |
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 10 月前 |
![]() |
Mohan · 是否有一种更快的方法来编写代码,从1:N中提取许多随机样本? 10 月前 |
![]() |
user2980746 · 在C#字典中键入xyz对的最有效方法是什么? 10 月前 |