使用 C++ 大写单词(std::string)的最快方法是什么?
在使用带有 -O3 标志的 g++ 4.6.3 的 Debian Linux 上,此函数使用boost::to_lower
将在 AMD Phenom(tm) II X6 1090T 处理器 (3200 MHz) 上的单个执行线程中在大约 24 秒内大写 81,450,625 个字。
void Capitalize( std::string& word )
{
boost::to_lower( word );
word[0] = toupper( word[0] );
}
这个函数使用std::transform
大约 10 秒做同样的事情。我在测试之间清除了虚拟机,所以我不认为这种差异是侥幸:
sync && echo 3 > /proc/sys/vm/drop_caches
void Capitalize( std::string& word )
{
std::transform(word.begin(), word.end(), word.begin(), ::tolower);
word[0] = toupper( word[0] );
}
有更快的方法吗?我不想为了速度而失去可移植性,但是如果有更快的方法可以在 std C++ 或带有 boost 的 std C++ 中工作,我想尝试一下。
谢谢。