我的理解是C/C++生成在特定机器架构上运行的本机代码.相反,Java和C#等语言运行在虚拟机之上,该虚拟机将本机架构抽象化.逻辑上,由于这个中间步骤,Java或C#似乎不可能匹配C++的速度,但是我被告知最新的编译器("热点")可以达到这个速度甚至超过它.
也许这更像是一个编译问题,而不是一个语言问题,但任何人都可以用简单的英语解释这些虚拟机语言之一如何比母语更好地执行?
我正在寻找一种在C++和Java之后学习的新语言.我打算尝试使用C#,但是很多人说它真的很慢,因为它是一种高级语言.那么为什么有人会使用C#?C++不是更快吗?它是否使开发更容易,但最终产品更慢?
另外,C#可以用于什么?你在Windows上使用它和很多.NET的东西,以及ASP.NET,但是在其他情况下,人们会使用C#?会有很多就业机会吗?
我目前正在研究一些性能关键代码,我有一个特殊情况,我喜欢用C#编写整个应用程序,但性能原因意味着C++最终会更快地达到FAR.
我对一些代码的两个不同实现进行了一些基准测试(一个用C#编写,另一个用C++编写),时序显示C++版本快了8倍,两个版本都处于发布模式并启用了所有优化.(实际上,C#具有编译为64位的优点.我忘了在C++时序中启用它)
所以我想,我可以在C#中编写大部分代码库(哪个C#非常容易编写),然后编写性能至关重要的本机版本.我在C#和C++中测试的特定代码片段是花费> 95%处理时间的关键领域之一.
这里编写本机代码的推荐智慧是什么?我从来没有写过调用本机C++的C#应用程序,所以我不知道该怎么做.我希望以最小化必须尽可能多地执行本机调用的成本的方式执行此操作.
谢谢!
编辑:下面是我实际尝试的大部分代码.这是一个n体仿真.95-99%的CPU时间将用于Body.Pairwise().
class Body
{
public double Mass;
public Vector Position;
public Vector Velocity;
public Vector Acceleration;
// snip
public void Pairwise(Body b)
{
Vector dr = b.Position - this.Position;
double r2 = dr.LengthSq();
double r3i = 1 / (r2 * Math.Sqrt(r2));
Vector da = r3i * dr;
this.Acceleration += (b.Mass * da);
b.Acceleration -= (this.Mass * da);
}
public void Predict(double dt)
{
Velocity += (0.5 * dt) * Acceleration;
Position += dt * …Run Code Online (Sandbox Code Playgroud) 扩展这个线程 - 我只想知道为什么从文件系统而不是MySQL数据库中检索文件的速度更快.如果要对两者进行基准测试,看看哪个会在10分钟内检索到最多的数据(多种类型的数据) - 哪一个会赢?
如果文件系统真的更快,那么为什么不将所有内容存储在文件系统中并用csv或xml替换数据库?
编辑1:
我为java的备用存储选项找到了一个很好的资源
编辑2:
我正在寻找一个Java API/Jar,它具有SQL数据库服务器引擎(或至少其中一些)的功能,它使用XML进行数据存储(最好).如果您知道某事,请在下面留言.
针对在Qt上使用C++编写的Android设备的应用程序是否会比使用Android SDK使用Java编写的应用程序执行得更好?