Jia*_* Yu 2 c++ java code-translation
有没有人尝试过自动Java到C++转换以提高速度?从长远来看,这是一场维护噩梦吗?刚刚阅读用于在Gecko中生成HTML5解析引擎http://ejohn.org/blog/html-5-parsing/
Dav*_*eas 17
通常,从一种语言到另一种语言的自动转换不会有任何改进.不同的语言有不同的习语会影响表现.
最简单的例子是循环和变量创建.在Java GC世界中,使用new创建对象几乎是免费的,并且它们也很容易被遗忘.在C++中,内存分配(一般来说)很昂贵:
// Sample java code
for ( int i = 0; i < 10000000; ++i )
{
String str = new String( "hi" ); // new is free, GC is almost free for young objects
}
Run Code Online (Sandbox Code Playgroud)
直接转换为C++会导致性能不佳(使用TR1 shared_ptr作为内存处理程序而不是GC):
for ( int i = 0; i < 10000000; ++i )
{
std::shared_ptr< std::string > str( new std::string( "hi" ) );
}
Run Code Online (Sandbox Code Playgroud)
用C++编写的等效循环将是:
for ( int i = 0; i < 10000000; ++i )
{
std::string str( "hi" );
}
Run Code Online (Sandbox Code Playgroud)
从一种语言到另一种语言的直接翻译通常以两个世界中最糟糕的方式结束,并且难以维护代码.
| 归档时间: |
|
| 查看次数: |
7865 次 |
| 最近记录: |