自从我完成任何编程以来已经有几十年了。事实上,我最后一次编程是在Windows出来之前的MS-DOS环境中。我有这个编程想法,我想尝试几年,我想我会尝试一下。计算量巨大。因此,我希望在一个普通的业余爱好程序员可以使用的最快环境中运行它。
我将使用64位机器。目前它运行的是Windows 7.多年前,一个程序在Windows环境中运行得慢得多,然后在MS-DOS模式下运行得慢得多。我的个人编程经验是6800 Motorola系列处理器的Fortran,Pascal,Basic和机器语言。我基本上愿意尝试任何事情。我也和Ubuntu一起玩过。不反对学习新知识。只是想利用速度。我宁愿在这个项目上不花钱。所以我正在寻找一个免费或非常接近免费的编译器。我已经下载了Microsoft Visual Studio C ++ Express。但我感觉完成的编译代码必须在Windows环境中运行。我肯定会大大降低处理速度。
所以我正在寻找可用的想法或指示。
谢谢,
祝你有个美好的一天! 吉姆
答案 0 :(得分:8)
在Windows下运行并没有实质性的性能损失,并且大量极高性能的应用程序也会这样做。随着新的编译器进步和新的优化技术,Windows不再是二十年前那种崭露头角,新的,优化不佳的技术。
一个简单的事实是,如果你没有编程20年,那么根本就没有任何真实的表现图。你应该像大多数人一样 - 从容易学习但不是很快的编程语言开始,如C#,创建程序,然后证明它运行得太慢,然后使用分析器等工具进行几次优化传递,那么你可以决定语言太慢了。如果你在二十年内没有写过一行代码,那么你写的任何程序都会很慢,因为从现代的角度来看你是一个新手程序员,而不是因为你选择了语言或环境。创建高性能应用程序需要详细了解目标平台以及选择的语言和程序的运行。
我绝对推荐使用Visual C ++。 Express Edition是免费的,Visual Studio 2010可以生成一些不合理的快速代码。 Windows不是一个缓慢的平台 - 即使您手写自己的操作系统,它可能会更慢,即使您生成的速度更快,性能提升也可以忽略不计,除非您的程序需要数天或数周才能完成一次执行
答案 1 :(得分:8)
速度通常伴随着便携性或复杂性的代价。
如果您的编程理念涉及大量计算,那么如果您使用的是英特尔CPU,则可能需要使用英特尔的编译器,这可能会受益于一些可能使您的程序更快的隐藏处理器功能。否则,如果可移植性是您的目标,那么使用GCC(GNU编译器集合),它可以将经过优化的可执行文件交叉编译到几乎任何可用的平台上。如果您的计算可以并行化,那么您可能需要查看SIMD(单输入多数据)和GPGPU / CUDA / OpenCL(使用图形卡进行计算)技术。
但是,我建议您首先尝试使用更简单的语言,例如: Python,Java,C#,Basic;看看速度是否足够好。由于您几十年来从未编程,因此可能由于处理器速度和RAM的增加,您对大量计算的看法目前微乎其微。如今,在GUI环境和命令行环境中运行没有太大的区别。
答案 2 :(得分:3)
操作系统不使您的程序神奇地运行得更慢。确实,操作系统确实在这里和那里吃了几个时钟周期,但是在所有中显然是不够的(并且这样做是为了向您提供您最有可能需要的服务,并且需要重新实施自己,否则)
Windows有些人似乎并不相信会占用50%的CPU。 可能吃0.5%,但Linux和OSX也是如此。如果你要放弃所有现有的操作系统,而是从头开始编写自己的操作系统,你最终会得到一个错误的,功能较少的操作系统,也会占用一些CPU时间。
实际上,环境并不重要。
重要的是你运行程序的硬件(这里,在GPU上运行它可能值得考虑)以及你如何利用硬件(并发性几乎是必须的你想利用现代硬件。)
您编写的代码以及编译方式确实有所作为。您运行的硬件有所不同。操作系统的选择没有。
答案 3 :(得分:3)
答案 4 :(得分:2)
关于DOS与Windows的两分钱。
多年前(类似于1998年?),我有同样的假设。
我有一些用QBasic编写的程序(这是在我发现C之前),它进行了强烈的计算(神经网络反向传播)。这需要时间。
一位朋友提出在Visual Basic中重写该东西。我反对,因为,你知道,所有那些小玩意儿,小工具和花哨的窗户,你知道,会减慢执行速度,你知道 ,重要的代码。
Visual Basic版本的表现远远超过了QBasic版本,它成为了默认的应用程序(我不会提到“嘿,即使在Excel的VBA中,由于受伤的骄傲,你的表现也超过了”,但是...... 。)的
这里的重点是“你知道”部分。
你不知道。
这里的操作系统并不重要。正如其他人在答案中解释的那样,选择您的硬件并选择您的语言。并且以清晰的方式编写代码,因为现在,编译器更擅长优化代码开发人员,除非你是John Carmack(过早优化是所有邪恶的根源)。
然后,如果您对结果不满意,请使用分析器测试您的代码。考虑多线程(如果您有多个核心,它会对您有所帮助...... TBB会浮现在脑海中。
答案 5 :(得分:1)
你想做什么?我相信所有的东西都应该默认编译为64位模式。计算机的速度要快得多。速度在大多数情况下不应成为问题。
附注:至于计算密集的内容,您可能需要查看OpenCL或CUDA。 OpenCL和CUDA利用GPU,与CPU相比,GPU可以一次传输大量信息。
答案 6 :(得分:0)
如果您的最后一个参考点是M68K和运行DOS的PC,那么我建议您在现代处理器和操作系统上使用C / C ++。如果遇到性能问题并且可以证明它们是由在Linux / Windows上运行引起的,或者编译器/优化器生成的代码不够,那么您可以查看其他操作系统和/或手动编码的ASM。如果您正在寻找免费的,Linux / gcc是一个很好的起点。
答案 7 :(得分:-2)
我是这个主题的原始海报。
我再次重申强调该计划将进行大量计算。
Windows& Ubuntu是多任务环境。正在运行进程,其中许多正在使用处理器资源。其中许多被视为不活跃。但是,多任务性质的Windows环境仍在不断监控启动每个进程的需求。例如,目前Windows任务管理器中显示62个进程。根据任务管理器,三个正在消耗CPU资源。因此,我们有三个正在消耗CPU处理的持续进程。还有59个显示活动但没有CPU处理。所以这是由Windows监控的63,然后还有Windows正在检查各种事情。
我希望能找到一些能够在裸机器级别上运行程序的方法。所有Windows(Ubuntu)都参与其中。
这个想法非常耗费计算。
感谢大家抽出时间作出回应。
祝你有个美好的一天, 吉姆