【问题标题】:How to force RAM to program?如何强制 RAM 编程?
【发布时间】:2013-06-23 17:37:06
【问题描述】:

我即将制作批处理程序,然后用BAT to EXE转换器编译它。 如果我正在制作类似的程序

@echo off
set Line=0
:Start
set /a Line=%Line% + 1
echo %Line%
goto :Start

我每次都看到,前一个号码,+1。

这速度很快,但我仍然可以按照顺序。

我知道计算机的速度要快数千倍,因为它们必须为计算机本身计算更多。

是否有可能为程序强制执行额外的性能?保留 RAM 或类似的东西?

【问题讨论】:

  • 不会有任何区别。 99.9% 的执行时间花在 echo 命令上。写入控制台非常慢。并且在您使用编译代码时不会变得更快。控制台速度慢并不重要,它是为人眼设计的。通过仅写入控制台(例如每 1000 次)来加快速度。

标签: windows for-loop batch-file cmd command


【解决方案1】:

代码,你可以测试一下:

@echo off & SETLOCAL
for /l %%i in (0) do <nul set/p=.

@echo off & SETLOCAL
:loop
SET /a var+=1
ECHO %var%
goto:loop

【讨论】:

  • 第一个代码结果点...我尝试将代码更改为for /l %%i in (0) do &lt;nul set /a=var+=1 但它说它缺少操作数...,这到底是如何提高性能的,它确实提高了打印性能,但它只是一个例子。我有大量需要执行的批处理文件...
【解决方案2】:

通过使用真正的编程语言,您可以将速度提高大约一百万倍。

在批处理中,您实际上是在执行纯文本命令,这些命令由命令解释器单独解析和执行。这从未针对速度进行优化。批处理到 exe 转换器只不过是包装批处理文件的代码并将其提供给命令解释器,因此它的执行速度不会比常规批处理文件快(或至少不会快多少)。

顺便说一下,额外的 RAM 并不意味着额外的性能。额外的 RAM 仅在您的应用程序可用的 RAM 太少而无法容纳其所有数据时才能为您提供额外的性能。如果发生这种情况,应用程序的一部分内存将被交换到磁盘,从而导致额外的性能损失。 但无论如何,你无法批量处理。

许多编程语言都有编译器,可以将您的代码转换为实际的机器指令,或者至少是用于高度优化的虚拟机(如 .NET 或 JVM)的指令。甚至像 PHP 这样的脚本语言也经过了高度优化,因为它们需要能够在很短的时间内执行大量代码。 对于批处理,情况并非如此。你只是错过了批处理的目的,它重复了很多命令行指令,因为你不想每次都输入它们。 ;-)

【讨论】:

  • 对于这种语言,我只知道 Batch。真的没有办法解决吗?
  • 恐怕不会,虽然减速的一部分是显示数字。屏幕 IO 总是相当密集的。如果您每 10 次迭代只显示一次该数字,您可能会注意到它实际上运行得更快。但是话又说回来,您还更改了程序的输出,这并不总是一种选择。但是,尽管 Batch 很棒(我什至曾经用它写过一个游戏),但可能是时候转向其他东西了。 :)
  • 是否有任何“编程”语言可以作为批处理?它可以在任何计算机上编译并轻松启动。
  • 不完全一样,虽然很多相似。我认为最接近 Batch 你会发现 Basic 或 Pascal,但我宁愿学习 C#。但这是您必须自己找出的东西,也取决于您的需求。对于某些问题,批处理可能仍然是最好的解决方案。 :)
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 2013-02-07
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多