2008-10-16 10 views
4

Je travaille sur un projet qui utilise largement la génération de code. Certains des fichiers qu'il génère contiennent plus de 0,25 million de lignes de code. VS (2K5) ne gère pas trop mal, mais R # (4.01) génère une exception de mémoire insuffisante toutes les deux minutes environ.Comment gérer au mieux les gigantesques fichiers de code source dans Visual Studio

Les découper en classes partielles/fichiers séparés n'est pas une option dans l'immédiat, bien que cela puisse être plus tard.

Y a-t-il des astuces intelligentes pour faire face à cela?

EDIT: ainsi les gens disent immédiatement (très raisonnablement) "n'ont pas un gros fichier" et suggèrent des façons de le décomposer en fichiers plus petits. C'est bon, mais je suis dans une boîte de temps en train de regarder autour de moi et de décider quoi optimiser. Mon problème est très précisément «comment voir un fichier incroyablement gros dans un IDE sans douleur», et non «comment refactoriser le projet». Pour les besoins de la question, veuillez imaginer que le fichier est en lecture seule. :)

+0

pas lié à la question, mais il semble étrange que je trouve> 0.25million à "son" plus grand que> 250k. – moogs

+0

C'est pourquoi je l'ai formulé de cette façon quand j'ai demandé plus de RAM à mon PM :) –

Répondre

2

On dirait que cet outil R # (est-ce que Resharper?) Est le problème.Pouvez-vous le désactiver? Sinon, il peut être judicieux de changer le type de fichier pour le code généré - vous n'allez probablement pas effectuer de modifications majeures sur ces fichiers. La perte de la coloration syntaxique et d'autres fonctionnalités spécifiques aux fichiers source ne poserait donc aucun problème.

0

Vous ne pouvez pas diviser les fichiers et utiliser le préprocesseur pour les ramener ensemble lorsque vous compilez?

+0

Les fichiers sont générés, donc tout manuel est écrasé sauf si je change le générateur ou écris une sorte de script pour le casser. Mais je n'ai pas le temps de le faire maintenant et je cherche un terme immédiat, pas même une solution à court terme. –

2

WOW!

250 000 lignes de code?

vous ne devriez pas penser d'un point de vue de la machine, mais d'un point de vue humain. Disons que vous voulez passer ce code à quelqu'un d'autre, pouvez-vous voir le temps de voir ce que fait le code?

Design Les motifs ont été créés pour faire face à ce problème, essayez de commencer petit, de le refactoriser, puis d'approfondir et d'appliquer plus de D.P.

vous aurez de moins en moins de lignes de code, et oui, l'une des meilleures astuces est de séparer en plusieurs fichiers selon sa proposition.

+0

Comme ci-dessus, c'est un code généré par la machine. Le découper en fichiers séparés peut être possible plus tard, mais je me demande s'il y a quelque chose pour soulager ma douleur pendant que je jette un premier coup d'œil. –

+0

Je pense qu'il y a quelque chose à dire pour essayer de comprendre si ces 250 000 lignes de code sont réellement nécessaires. Une fois que vous aurez résolu le problème immédiat, il pourrait être utile de creuser un peu dans le générateur de code. –

2

En supposant que vous ne modifiez pas manuellement votre code généré. (= Mauvaise idée !!)

Vous pouvez placer les fichiers générés dans une solution séparée que vous compilez à partir de la ligne de commande, puis faites référence les dll du projet sur lequel vous travaillez.

+0

Bonne solution. Cependant, vous n'aurez pas à compiler la solution séparée à partir de la ligne de commande. Peut-être que mettre le code dans un projet séparé et ensuite décharger le projet (après qu'il a été compilé) peut être une bonne solution, de cette façon VS gère mieux les dépendances. – OregonGhost

+0

Je ne sais pas quel est le problème du resharper. Si cela bloque trop de compiler le code offensant de la ligne de commande pourrait être une solution. Si ce n'est pas si grave, alors vous avez raison. Un projet séparé est une séparation suffisante. Cela dépend aussi de la fréquence à laquelle le code généré doit être changé. – Mendelt

0

Il faut être possible d'une manière ou d'une autre de grouper de gros morceaux de ces fichiers dans des bibliothèques séparées. Vous les sépareriez ensuite en plusieurs projets. J'ai essayé ça? Quelle est la structure actuelle de votre code source/projet?

4

Je au moins changer d'énormes fichiers extention à quelque chose comme .cpp_gen ou .cpp_huge pour enlever la coloration syntaxique, décrivant etc., puis réattribuer outil de Reconstruire à C/C++ outil de compilateur pour eux.

1

Le problème se présente-t-il lorsque vous ouvrez le fichier pour le modifier dans Visual Studio? J'ai remarqué que l'éditeur VS peut être assez lent et inefficace sur les gros fichiers. En outre, vous pouvez essayer de désactiver certaines options, par ex. Le mot-emballage tue ma machine pour une raison quelconque.

Sinon, vous pouvez utiliser autre chose que le Textpad avec la mise en surbrillance de la syntaxe installée pour éditer le gros fichier source problématique ... pas aussi agréable, c'est sûr.

1

N'utilisez pas Visual Studio. Il y a trop de choses dans VS.

Comme le fichier est en lecture seule, vous n'utiliserez aucune des fonctions IDE (Intellisense, outils de refactoring, formatage).

Vous obtiendrez probablement de meilleures performances en utilisant une application plus simple, telle que le bloc-notes ++ pour afficher simplement le fichier. Notepad ++ fera la mise en évidence de la langue standard si vous aimez la couleur.

Questions connexes