为什么我的程序需要这么长时间才能运行?

时间:2014-10-04 23:13:52

标签: c# performance visual-studio-2013

我在C#中编写了一个简短的代码,用于取出Lyx软件生成的文本输出并进行修改,以便将其发布到Math.SE

代码假设我的桌面上有一个名为answer.txt的文件,读取文件然后修改代码,然后将输出保存为我的桌面上的answer2.txt:例如,Lyx生成的文本具有我删除的第一行“%预览正文”。另一个例子是替换

  

\ textbf {有些文字应该是粗体}

  

**一些应该加粗的文字**

这是我写的代码:

class Program
{
    static void Main(string[] args)
    {
        using (StreamReader sr = new StreamReader(@"C:\Users\BelgiAmir\Desktop\answer.txt"))
        {
            string text = sr.ReadToEnd();
            string AfterFirstReplacement = text.Replace("\\[", "$$");
            string AfterSecondReplacement = AfterFirstReplacement.Replace("\\]", "$$");
            string RemovedPreviewHeader = AfterSecondReplacement.Replace("% Preview body", "");
            int indexOfBold ;
            while ((indexOfBold = RemovedPreviewHeader.IndexOf("\\textbf")) != - 1)
            {
                indexOfBold = RemovedPreviewHeader.IndexOf("\\textbf");
               int endIndex = RemovedPreviewHeader.IndexOf("}", indexOfBold);
               string boldedText = RemovedPreviewHeader.Substring(indexOfBold + 8, endIndex - indexOfBold - 8);
                RemovedPreviewHeader = RemovedPreviewHeader.Replace("\\textbf{" + boldedText + "}",
                    "**" + boldedText + "**");

            }
            File.WriteAllText(@"C:\Users\BelgiAmir\Desktop\answer2.txt", RemovedPreviewHeader);
        }
    }
}

但是我的代码似乎很慢,至少我认为这不是合理的运行时间。 我按以下方式测试了代码:我的桌面上有两个 answer.txt和answer2.txt。 .exe文件也位于同一硬盘驱动器上(并位于同一分区上)。我打开了.exe文件并使用普通的秒表来测量

的运行时间
  

15.5秒

文件(.exe和.txt文件)位于SSD上,我的计算机有8GB RAM和i5 Haswell处理器(i5-4570)。操作系统是Windows 7专业版。

这似乎是一个非常长的运行时间 - 打开一个空的.text文件15.5秒,然后所有字符串操作应该非常快,因为它们是在空字符串上完成的,并且while循环不应该执行一次,然后我保存一个空文件。

这是我前一段时间编写的代码,这与我总是得到的运行时间大致相同(即使我已经重启计算机几次并且没有运行“重型”软件)

注意:代码是使用VS 2013 express编写和编译的,我尝试使用.exe的Debug版本运行此测试,并且两者都使用Release版本(并且运行时间大致相同) 有人可以说明这个漫长的运行时间的原因以及如何解决它?

ADDED :在VS中运行Debug并点击F5,代码运行时间不到两秒!我不知道为什么当我通过VS运行它然后通过打开.exe文件这么快时,有人可以解释一下吗?

0 个答案:

没有答案