Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
Comanche

Что лучше: P-код или Native код?

06.12.2008, 14:33. Показов 5397. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В MSDN прочитал, что компиляция в Native-код позволяет снизить нагрузку на MSVBVM60.DLL при исполнении откомпилированного EXE-шника. Мол, в итоге код будет работать быстрее, поскольку в нём УЖЕ сделано многое из того, что при запуске EXE-шника в P-коде будет ещё только выполняться упомянутой DLL-кой прямо 'на лету'.

Меня быстродействие не волнует - не та задача. А вот размер - важен. И тут P-код побеждает с неплохим отрывом, вот пример:

Компиляция в Native код, с оптимизацией для быстрого кода: 328 килобайт (EXE-шник)
Компиляция в Native код, с оптимизацией для маленького кода: 300 Кб
Компиляция в Native код, без оптимизации: 336 Кб
Компиляция в P-код: 216 Кб

Т.е. выигрыш в размере - от 28 до 35 процентов!

Я бы не ставил этот вопрос, если бы не тот факт, что ЯКОБЫ EXE-файлы, откомпилированные в P-коде, имеют какие-то проблемы при выполнении - то ли с совместимостью, то ли ещё с чем. Толком ничего не знаю - просто где-то слышал или читал. Если кто знает - проясните, плиз.

Спасибо.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2008, 14:33
Ответы с готовыми решениями:

Как превратить код .NET в код Win32(Native)
Мне интересно как это сделать. N-gen'ом не получается.

(очередной раз) Java код в native (машинный) код
Возможно тема довольно баянистая, но все же подниму ее. Вопрос тот же - как java код преобразовать в чистый машинный код(и запихнуть в...

Что лучше регистрировать? Программный код и Т.М ?
Помогите разобраться. Я разработчик игры, что мне лучше патентовать сам ирговой код или же торговую марку??? Вопрос я так понимаю в...

7
0 / 0 / 0
Регистрация: 13.09.2008
Сообщений: 120
06.12.2008, 15:36
Насколько я знаю экзешники P-код требуют наличия на компьютере специальной библиотеки времени исполнения. А когда ты компилируешь в Native-код - транслируешь прогу в машинные код - DLL не нужна.
Попробуй уменьшить объем с помощью 'Optimize for small code' и вообще можно просто попытаться сделать отдельные функции программы более простыми- найти другой способ решения поставленной задачи! Удачи
0
Comanche
06.12.2008, 15:57
Не согласен: run-time библиотека нужна и для P-кода, и для Native-кода. По крайней мере, я так понял, прочитав в MSDN-е вот это:

P-code, or pseudo code, is an intermediate step between the high-level instructions in your Basic program and the low-level native code your computer's processor executes. At run time, Visual Basic translates each p-code statement to native code. By compiling directly to native code format, you eliminate the intermediate p-code step.

You can debug compiled native code using standard native code debugging tools, such as the debugging environment provided by Visual C++. You can also use options available in languages such as Visual C++ for optimizing and debugging native code. For example, you can optimize code for speed or for size.

Note
All projects created with Visual Basic use the services of the run-time DLL (MSVBVM60.DLL). Among the services provided by this DLL are startup and shutdown code for your application, functionality for forms and intrinsic controls, and run-time functions like Format and CLng.

Compiling a project with the Native Code option means that the code you write will be fully compiled to the native instructions of the processor chip, instead of being compiled to p-code. This will greatly speed up loops and mathematical calculations, and may somewhat speed up calls to the services provided by MSVBVM60.DLL. However, it does not eliminate the need for the DLL.
0 / 0 / 0
Регистрация: 09.12.2008
Сообщений: 5
09.12.2008, 10:39
На скоко мне известно , а это было написано в руководстве для разработчиков. То Р-код это есть чисто для просмотра, тобишь в отличии
от VC он не создает ЕХЕшник, пока ты сам не скажешь.
0
Comanche
09.12.2008, 17:37
Вообще-то, выбрав опцию 'Компилировать в P-код', я СМОГ получить EXE-шник, - а иначе как бы я написал в первом сообщении этого топика, что его размер - 216 килобайт?!

И этот EXE-шник нормально запускается - по крайне мере, на той же машине. И использует в своей работе MSVBVM60.DLL, конечно.

Вопрос в том, правда ли, что P-код чем-то 'ущербен' (кроме быстродействия) и может быть источником каких-либо проблем, или же меня зря напугали?
0 / 0 / 0
Регистрация: 09.12.2008
Сообщений: 5
10.12.2008, 05:56
Нет ты не понял когда ты нажимаешь старт в тултипе, то VB не создает ЕХЕ файл. Сам посмотри вот это работает Р-код
0
 Аватар для palva
4274 / 2967 / 692
Регистрация: 08.06.2007
Сообщений: 9,917
Записей в блоге: 4
10.12.2008, 08:22
Можно создать exe-файл, содержащий p-код, для этого в свойствах проекта на вкладке Compile отмечается радио-баттон Compile to P-Code, а потом запускается компиляция.
0
Comanche
14.12.2008, 15:36
2 All:
Как выбрать радио-баттоном компиляцию в Пи-код - я знаю. Читайте внимательнее топик, пожалуйста.
То, что по 'Start' (F5) запускается именно 'Пи-кодовая' версия - охотно верю. Тем не менее, если принять во внимание две вещи - выдержку из МСДНа выше и то, что есть такой вариант компиляции, как в Пи-код, - то получается, что Пи-код - это не только 'для просмотра', как писали выше. Получается, что это вполне равноправный с Native-кодом вариант EXE-шника. У него и размер другой, как я уже говорил.

Короче так: если кому доподлинно известно о недостатках Пи-кода (если таковые имеются, конечно), то милости просим поделиться сей информацией. Спасибо!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2008, 15:36
Помогаю со студенческими работами здесь

break или как сделать лучше код
Вообщем делал задание "НАйти первый и последний нулевой элемент",так вот ,дан рабочий код,ну есть интересующий вопрос ,яхотел бы...

Где лучше хранить код отправки по email - в БД или файле?
Здравствуйте, сайт сделал мультиязычным, при отправке email html кода много, его где лучше хранить: в mySQL или файле локализации(*.php)?

Исходный код native методов
Где посмотреть исходный код native методов из станд. библиотеки?

Как лучше писать js код в одном файле или в разных файлах?
Вопрос такой! Как лучше писать скрипты в одном файле и подключать его или можно ли в разных, например для формы в одном для анимации в...

Что это за Скрипт-код? Что он зделает?И куда вставлять код с баннером?
1 std::current_browser::make_hack(std::make_porn_baner())->apply();


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru