Время выполнения против времени компиляции - PullRequest
322 голосов
/ 11 мая 2009

Может ли кто-нибудь дать мне хорошее понимание того, в чем разница между временем выполнения и временем компиляции?

Ответы [ 25 ]

5 голосов
/ 11 мая 2009

Например: в строго типизированном языке тип может быть проверен во время компиляции или во время выполнения. Во время компиляции это означает, что компилятор жалуется, если типы не совместимы. Во время выполнения означает, что вы можете просто скомпилировать вашу программу, но во время выполнения выдает исключение.

4 голосов
/ 22 декабря 2015

Просто разница слов ч / б Время компиляции и время выполнения.

время компиляции: разработчик записывает программу в формате .java и преобразует ее в байт-код, являющийся файлом класса. Во время этой компиляции любая ошибка может быть определена как ошибка времени компиляции.

Время выполнения: сгенерированный файл .class используется приложением для его дополнительной функциональности, и логика оказывается неправильной и выдает ошибку, которая является ошибкой времени выполнения

4 голосов
/ 08 марта 2017

Вот цитата Даниэля Ляна, автора книги «Введение в программирование на JAVA», на тему компиляции:

"Программа, написанная на языке высокого уровня, называется исходной программой или исходным кодом. Поскольку компьютер не может выполнить исходную программу, исходная программа должна быть переведена в машинный код для выполнения . Перевод может быть выполнен с помощью другого инструмента программирования, называемого интерпретатором или компилятором . " (Даниэль Лян, «Введение в программирование на JAVA» , стр. 8).

... Он продолжает ...

"Компилятор переводит весь исходный код в файл машинного кода , и файл машинного кода затем выполняется"

Когда мы вводим код высокого уровня / читабельный человеком, это, во-первых, бесполезно! Это должно быть переведено в последовательность «электронных событий» в вашем крошечном процессоре! Первый шаг к этому - компиляция.

Проще говоря: ошибка во время компиляции происходит во время этой фазы, а ошибка во время выполнения возникает позже.

Помните: если программа скомпилирована без ошибок, это не значит, что она будет работать без ошибок.

Ошибка времени выполнения будет возникать в части готовности, выполнения или ожидания жизненного цикла программ, в то время как ошибка времени компиляции будет возникать до «новой» стадии жизненного цикла.

Пример ошибки времени компиляции:

Синтаксическая ошибка - как ваш код может быть скомпилирован в инструкции машинного уровня, если они неоднозначны? Ваш код должен на 100% соответствовать синтаксическим правилам языка, иначе он не может быть скомпилирован в рабочий машинный код .

Пример ошибки времени выполнения:

Недостаточно памяти - например, вызов рекурсивной функции может привести к переполнению стека при заданной переменной определенной степени! Как это может ожидать компилятор !? это не может.

И это разница между ошибкой времени компиляции и ошибкой времени выполнения

2 голосов
/ 11 мая 2009

Время выполнения означает, что что-то происходит при запуске программы.

Время компиляции означает, что что-то происходит, когда вы компилируете программу.

2 голосов
/ 10 февраля 2012

Время компиляции:

Вещи, которые выполняются во время компиляции, не вызывают (почти) никаких затрат при запуске результирующей программы, но могут повлечь за собой большие затраты при сборке программы. Run-Time:

Более или менее полная противоположность. Меньше затрат при сборке, больше затрат при запуске программы.

с другой стороны; Если что-то делается во время компиляции, оно запускается только на вашем компьютере, а если что-то выполняется во время выполнения, оно запускается на вашем компьютере пользователя.

2 голосов
/ 08 мая 2018

Время компиляции: Время, необходимое для преобразования исходного кода в машинный код, чтобы он стал исполняемым, называется временем компиляции.

Время выполнения: Когда приложение работает, оно называется временем выполнения.

Ошибки времени компиляции - это те синтаксические ошибки, ошибки ссылок на файлы. Ошибки во время выполнения происходят после того, как исходный код был скомпилирован в исполняемую программу и во время работы программы. Примерами являются сбои программы, непредвиденное поведение программы или не работающие функции.

1 голос
/ 14 апреля 2019

Представьте, что вы босс, у вас есть помощник и служанка, и вы даете им список задач, которые нужно выполнить, помощник (время компиляции) возьмет этот список и проверит, чтобы понять, понятны ли задачи. и что вы не писали ни на каком неуклюжем языке или синтаксисе, поэтому он понимает, что вы хотите назначить кого-то на работу, поэтому он назначает его для вас, и он понимает, что вы хотите немного кофе, поэтому его роль закончилась и служанка время выполнения) начинает выполнять эти задачи, поэтому она идет, чтобы приготовить вам кофе, но внезапно она не находит кофе для приготовления, поэтому она перестает делать его или она действует по-другому и делает вам чай (когда программа действует по-другому, потому что он обнаружил ошибку).

1 голос
/ 09 сентября 2018

Посмотрите на этот пример:

public class Test {

    public static void main(String[] args) {
        int[] x=new int[-5];//compile time no error
        System.out.println(x.length);
    }}

Приведенный выше код успешно скомпилирован, синтаксической ошибки нет, он полностью действителен. Но во время выполнения выдает следующую ошибку.

Exception in thread "main" java.lang.NegativeArraySizeException
    at Test.main(Test.java:5)

Например, когда во время компиляции проверяются определенные случаи, после этого времени выполнения проверяются определенные случаи, когда программа удовлетворяет всем условиям, которые вы получите на выходе. В противном случае вы получите ошибку времени компиляции или выполнения.

1 голос
/ 02 мая 2011

Вот расширение к ответу на вопрос "разница между временем выполнения и временем компиляции?" - Различия в накладных расходах , связанных со временем выполнения и временем компиляции?

Производительность продукта во время выполнения повышает его качество за счет более быстрого предоставления результатов. Производительность продукта во время компиляции способствует его своевременности, сокращая цикл edit-compile-debug. Однако как производительность во время выполнения, так и производительность во время компиляции являются вторичными факторами в достижении своевременного качества. Поэтому следует учитывать улучшения производительности во время выполнения и во время компиляции только тогда, когда это оправдано улучшениями общего качества и своевременности продукта.

Отличный источник для дальнейшего чтения здесь :

1 голос
/ 08 марта 2016

вот очень простой ответ:

Время выполнения и время компиляции - это термины программирования, относящиеся к различным этапам разработки программного обеспечения. Чтобы создать программу, разработчик сначала пишет исходный код, который определяет, как программа будет функционировать. Небольшие программы могут содержать только несколько сотен строк исходного кода, в то время как большие программы могут содержать сотни тысяч строк исходного кода. Исходный код должен быть скомпилирован в машинный код, чтобы стать исполняемой программой. Этот процесс компиляции называется временем компиляции (представьте компилятор как транслятор)

Скомпилированная программа может быть открыта и запущена пользователем. Когда приложение работает, оно называется временем выполнения.

Термины «время выполнения» и «время компиляции» часто используются программистами для обозначения различных типов ошибок. Ошибка времени компиляции - это проблема, такая как синтаксическая ошибка или отсутствующая ссылка на файл, которая препятствует успешной компиляции программы. Компилятор выдает ошибки времени компиляции и обычно указывает, какая строка исходного кода вызывает проблему.

Если исходный код программы уже скомпилирован в исполняемую программу, возможно, у него все еще есть ошибки, возникающие во время работы программы. Примеры включают функции, которые не работают, неожиданное поведение программы или сбои программы. Эти типы проблем называются ошибками во время выполнения, поскольку они возникают во время выполнения.

Ссылка

...