Использование GCC из VS 2005 (8) IDE

Обычно это код. Вот простой пример:

import java.util.*;

public class GarbageCollector {

    public static void main(String... args) {

        System.out.printf("Testing...%n");
        List<Double> list = new ArrayList<Double>();
        for (int outer = 0; outer < 10000; outer++) {

            // list = new ArrayList<Double>(10000); // BAD
            // list = new ArrayList<Double>(); // WORSE
            list.clear(); // BETTER

            for (int inner = 0; inner < 10000; inner++) {
                list.add(Math.random());
            }

            if (outer % 1000 == 0) {
                System.out.printf("Outer loop at %d%n", outer);
            }

        }
        System.out.printf("Done.%n");
    }
}

Использование java 1.6.0_24-b07 На 32-разрядной версии Windows 7.

java -Xloggc: gc.log GarbageCollector

Затем посмотрите на gc.log

  • Запущено 444 раза с использованием метода BAD
  • Запущено 666 раз с использованием метода WORSE
  • Триггер 354 раза с использованием метода BETTER
  • g2]

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

10
задан Community 23 May 2017 в 12:28
поделиться

7 ответов

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

После того как Вы знаете, что Ваша определенная команда командной строки окон для вызова делает или g ++ на Вашем коде, затем Вы создаете "Событие Перед сборкой" в Вашем Проекте Visual Studio. ("Свойства проекта>> Свойства Конфигурации>> События Сборки>> Событие Перед сборкой").

Событие перед сборкой может назвать сценарий bat-файла или любой другой сценарий на Вашей машине, и тот сценарий сможет возвратить код ошибки. По существу, "сценарий хорошо", или "сценарий, НЕУДАВШИЙСЯ", является степенью суммы коммуникации, которую Ваш сценарий может иметь НАЗАД к Visual Studio.

Сценарий автоматически не видит всех переменных среды Visual Studio (таких как $ (InputDir), $ (ProjectDir), $ (SolutionName), и т.д.), однако можно использовать те переменные, когда Вы указываете, как назвать сценарий. Другими словами, можно передать те значения сценарию как аргументы.

Настройте это так, чтобы каждый раз Вы создали в Visual Studio, событие перед сборкой СНАЧАЛА попытается выполнить make/g ++ на Вашем коде. Если Ваш сценарий (тот, который называет make/g ++) обнаруживает какие-либо проблемы, то сценарий возвращает ошибку, и сборка может быть ОСТАНОВЛЕНА прямо тогда и там. Сценарий может распечатать к stdout или stderr, и тот вывод должен быть видим Вам в окне вывода Сборки Visual Studio (окно, которое обычно показывает материал как "========== Сборка: 3 следовавших, 0 отказавших").

У Вас может быть печать сценария:

"BUILD ПЕРЕСТАЛА РАБОТАТЬ, непортативный обнаруженный код, make/g ++ возвратил following:........."

Таким образом, Вы не должны помнить периодически переключаться от Visual Studio до командной строки. Это будет автоматически сделано для Вас каждый раз, когда Вы создаете.

5
ответ дан 4 December 2019 в 02:52
поделиться

Существуют, конечно, способы сделать это - это - то, как мы разрабатываем для PS3 с набором инструментальных средств Sony (который основан на gcc). Я не знаю точно, как это работает, но это интегрируется довольно беспрепятственно в VS.

Я думаю, что необходимо сделать, или настраивается это, чтобы создать с make-файлом (вероятно, самый легкий) или записать программу обертки, которая преобразовывает аргументы VC gcc. Кроме того, если Вы хотите вывод ошибки/предупреждения в формате VS (таким образом, можно нажать его и разбудить тот файл/строку в редакторе), Вам нужно что-то для преобразования вывода.

Этот материал может помочь Вам в связанной дискуссии об использовании VS с версией WRS/VxWorks gcc инструментов:

Особенно отметьте программу, связанную там, который преобразовывает вывод ошибок.

1
ответ дан 4 December 2019 в 02:52
поделиться

Я не думаю, что существует простой переключатель, потому что параметры командной строки gcc очень отличаются от VSs. В любом случае просто выполнение компилятора будет нетривиально, поскольку Ваша система сборки, вероятно, устанавливает набор препроцессора, определяет и переменные сборки, которые должны быть установлены, чтобы компиляция успешно выполнилась.

Если Ваш коллега работает над Unix, у него, вероятно, есть делание, сканирования или находящаяся в cmake система сборки так или иначе. Можно использовать Cygwin, чтобы установить стандартный набор инструментальных средств Unix в Windows, включая gcc, сделать, согнуть, бизон и все другие положительные герои Unix. Существуют собственные версии сканирований и cmake, но они попытаются использовать VS, так, чтобы не помогал Вам. Я не попытался установить их через Cygwin, чтобы видеть, вынуждает ли это их к gcc, но это не могло бы относиться к Вам.

Создание сделать система, которая использует компилятор VS, является возможным, но болезненным (там, сделанный это). И другой вопрос.;)

Можно затем использовать специальный buildstep для выполнения компиляции gcc из VS. Было бы лучше иметь отдельную цель сборки (как Отладка и Выпуск), и можно создать тех, которые в файлах проекта (они - просто ASCII-файлы, проверяют их), но я - недостаточно человека VS, чтобы знать, как легкий, который должен был бы сделать. Совершенствование его будет немного болезненным, Вы могли бы хотеть записать сценарий для создания его автоматически.

1
ответ дан 4 December 2019 в 02:52
поделиться

Я должен был поддержать отдельные make-файлы для компиляции с gcc. Существует оплачиваемая авансом стоимость, связанная с изучением, делают, но Вы извлечете выгоду из глубоких знаний Вашего кода и различий между VS C++ и gcc. Когда я сделал это, я использовал VC 6, таким образом, может быть лучший путь теперь с VS 2005.

0
ответ дан 4 December 2019 в 02:52
поделиться

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

Если Ваша сборка make-файла MSVC будет способна к созданию файлов отладки (PDB) - который это должно смочь сделать, то Отладчик VS будет работать беспрепятственно также.

Затем создание использующий GCC в Visual Studio так же просто как выбор конфигурации 'GCC', выпадающей на панели инструментов.

0
ответ дан 4 December 2019 в 02:52
поделиться

Попробуйте Cygwin, пока Вы настраиваете все свои Make-файлы правильно, можно всегда пытаться скомпилировать и на VS и на GCC

0
ответ дан 4 December 2019 в 02:52
поделиться

это зависит, насколько сложный Ваши файлы проекта:

Вам определенно нужна gcc среда как cygwin.

  • для маленьких проектов или единственной компиляции файла можно использовать сделанный на заказ инструмент (файл правил)

  • для больших проектов/решений я автоматически генерирую автоинструменты, configure/makefile от vcproj/sln-file, и компилирую эту внутреннюю часть IDE. исходные файлы/строки предупреждений и ошибки gcc переводятся в свое эквивалентное IDE (активируемый по щелчку в окне вывода).

0
ответ дан 4 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: