Страница 1 из 1

Новый LabWindows/CVI

Добавлено: 03 дек 2008, 01:12
Eugen Graf
Я так понимаю по этому принципу устроен :labview: . Иначе нужно было бы компилировать весь проект при каждом новом изменении в каком либо приборе.

http://zone.ni.com/devzone/cda/tut/p/id/7960

Large projects often consist of multiple source files that include the same header files. The time the compiler takes to process header files over and over again can account for nearly all of the time required to build a project. To make builds faster, LabWindows/CVI 9.0 and later allows users to precompile header files, store the compiled state in a file, and during subsequent compilations, combine the precompiled code with code that is still under development. The first compilation — the one that creates the precompiled header file — takes a bit longer than subsequent compilations, but each subsequent compilation is faster because only modified header files need to be recompiled.

In other words, a pre-compiled header is a cache of header files. The compiler can analyze a set of headers once, compile them, and then have the results ready for any module that needs them.

Re: Новый LabWindows/CVI

Добавлено: 04 дек 2008, 00:49
mzu2006
eg писал(а):Я так понимаю по этому принципу устроен :labview:
По-моему, это вообще не про то. Precompilerd Header - это такой способ сокращения времени компиляции, известный со времён первых компиляторов MSVC (GCC from 3.4x), когда редко меняемые файлы заголовков в C/C++ программе подвергается предварительной обработке (синтаксическому разбору, анализу итд итп), чтобы директива #include быстрее работала. Как правило, многие библиотечные файлы заголовков предкомпилируются. http://en.wikipedia.org/wiki/Precompiled_header

То что, NI включили precompiled headers только начиная с версии 9 (т.е. только что) - IMHO позор для NI

В :labview: вообще нет файлов заголовков, так ведь. Код компилируется сразу по внесении изменений в БД или ЛП. То, что в C попадает в файлы заголовков, в LV - лежит отдельно в каждом инструменте. Собственно, по-моему, мгновенная компиляция просто снимает необходимость во всяких заголовочных файлах. Т.е. в широком смысле в :labview: прекомпилируется почти всё.

Re: Новый LabWindows/CVI

Добавлено: 04 дек 2008, 01:03
Eugen Graf
Вполне согласен со всем вышесказаным.
Меняются параметры вызова функции - перекомпилируестя сама функция и все функции вызывающие её. Меняется что либо внутри самой функции - перекомпилируется только сама функция. Сам компилированый код (в виде полупережёванных для рантайма команд с опциями) записывается в прибор вместе со всей остальной инфой.

Только вот вопросы:
Почему такое не делается в текстовых языках программирования? Или я не в курсе?

Re: Новый LabWindows/CVI

Добавлено: 04 дек 2008, 01:46
mzu2006
eg писал(а):Почему такое не делается в текстовых языках программирования?
Думаю, что это долго. Набиваешь быстрее, чем компилируется.
В :labview: наоборот.

кроме того, в LV можно копилировать уже 1 иконку навход к которой все провода заведены, а в C,C++,C# минимальная единица компиляции будет функция

Ещё мысль: в LV сама блок-диаграмма выстраивает причинно-следственные связи. В С - для причинно следственных связей требутеся разбор больших кусков текста.

наверняка, правда, не знаю.

Re: Новый LabWindows/CVI

Добавлено: 04 дек 2008, 01:57
Eugen Graf
Наверное минимальной единицей для (пре-) компиляции был бы символ, напечатаный программистом.

А вообще клёвая тема, которая меня очень интересует. Может кто то знает какие либо секреты наверняка? Какая есть инфа по этой теме? Насколько я знаю само ядро :labview: написано на С++ (видно по выскакивающим ошибкам во время программирования).