【问题标题】:How best to deal with gigantic source code files in Visual Studio在 Visual Studio 中如何最好地处理巨大的源代码文件
【发布时间】:2010-09-17 11:58:28
【问题描述】:

我正在开展一个大量使用代码生成的项目。它生成的一些文件包含超过 25 万行代码。 VS (2K5) 处理的不太好,但是 R# (4.01) 每两分钟左右就会抛出一个内存不足的异常。

将它们拆分为部分类/单独的文件在短期内不是一种选择,但可能会在以后。

是否有任何巧妙的 IDE 技巧来处理这个问题?

编辑:所以人们会立即(非常明智地)说“没有那么大的文件”并建议将其拆分为更小的文件的方法。

这很好,但我正在执行一项有时间限制的任务,环顾四周并决定要优化什么。我的问题非常具体地是“如何在 IDE 中轻松查看异常大的文件”,而不是“如何重构项目”。出于问题的目的,请想象该文件是只读的。 :)

【问题讨论】:

  • 与问题无关,但我发现 >025 万“听起来”大于 >250k,这似乎很奇怪。
  • 这就是为什么我在向我的 PM 要更多 RAM 时这样说的原因 :)

标签: visual-studio-2005 code-generation resharper


【解决方案1】:

我至少会将大文件扩展名更改为 .cpp_gen.cpp_huge 以删除语法突出显示、大纲等,然后将构建工具重新分配回 C/C++ 编译工具

【讨论】:

    【解决方案2】:

    似乎这个 R# 工具(是 Resharper 吗?)是问题所在。你能禁用它吗? 否则,更改生成代码的文件类型可能是有意义的 - 大概,您不会对这些文件进行重大编辑,因此丢失语法着色和其他特定于源文件的功能不会成为问题。

    【讨论】:

      【解决方案3】:

      哇!

      250 000 行代码?

      你不应该从机器的角度思考,而应该从人类的角度思考。假设您想将该代码传递给其他人,您能看到时间查看代码的作用吗?

      设计模式是用来处理这些问题的,尝试从小处着手,重构它,然后更深入并开始应用更多 D.P.

      您将拥有越来越少的代码行,是的,最好的技巧之一是根据它的建议分成几个文件。

      【讨论】:

      • 如上,它是机器生成的代码。稍后可能可以将其拆分为单独的文件,但我想知道在我初步查看时是否有什么可以减轻我的痛苦。
      • 我认为要弄清楚这 250,000 行代码是否真的有必要有一些话要说。一旦你解决了眼前的问题,可能值得深入研究一下代码生成器。
      【解决方案4】:

      假设您不是手动编辑生成的代码。 (=坏主意!!)

      您可以将生成的文件放在从命令行编译的单独解决方案中,然后从您正在处理的项目中引用这些 dll。

      【讨论】:

      • 很好的解决方案。不过,您不必从命令行编译单独的解决方案。也许将代码放到一个单独的项目中,然后卸载项目(在编译之后)可能是一个很好的解决方案,这样 VS 可以更好地处理依赖关系。
      • 我不知道 resharper 问题有多严重。如果挂起太多,从命令行编译有问题的代码可能是一个解决方案。如果它不是那么糟糕,那么你是对的。一个单独的项目就足够了。它还取决于生成的代码需要多久更改一次。
      【解决方案5】:

      是在 Visual Studio 中打开文件进行编辑时出现问题吗?我注意到 VS 编辑器在处理大文件时可能非常缓慢且效率低下。此外,您可以尝试关闭某些选项,例如由于某种原因,自动换行会杀死我的机器。

      否则,您可以使用安装了语法突出显示的 Textpad 之类的其他工具来编辑有问题的大型源文件...当然不是那么好。

      【讨论】:

        【解决方案6】:

        不要使用视觉工作室。 VS 中发生的事情太多了。

        由于该文件是只读的,因此您不会使用任何 IDE 功能(智能感知、重构工具、格式化)。

        您可能会使用更简单的应用程序获得更好的性能,例如用于简单查看文件的 notepad++。如果你喜欢颜色,Notepad++ 会做标准语言高亮。

        【讨论】:

          【解决方案7】:

          你不能在编译时分解文件并使用预处理器将它们重新组合在一起吗?

          【讨论】:

          • 文件已生成,因此除非我更改生成器或编写某种脚本将其分解,否则任何手动操作都会被覆盖。但我现在没有时间做这件事,我正在寻找一个短期的解决方案,甚至不是短期的解决方案。
          【解决方案8】:

          必须能够以某种方式将这些文件的大块分组到单独的库中。然后,您将它们分成几个项目。试过这个?您的源代码/项目的当前结构是什么?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-16
            • 2021-09-21
            • 2013-12-19
            • 1970-01-01
            • 2014-07-29
            相关资源
            最近更新 更多