56 lines
2.2 KiB
Markdown
56 lines
2.2 KiB
Markdown
# Frequently Asked Questions
|
|
|
|
<!--
|
|
@cond TURN_OFF_DOXYGEN
|
|
-->
|
|
# Table of Contents
|
|
|
|
* [Introduction](#introduction)
|
|
* [FAQ](#faq)
|
|
* [Why is my debug build on Windows so slow?](#why-is-my-debug-build-on-windows-so-slow)
|
|
<!--
|
|
@endcond TURN_OFF_DOXYGEN
|
|
-->
|
|
|
|
# Introduction
|
|
|
|
This is a constantly updated section where I'll try to put the answers to the
|
|
most frequently asked questions.<br/>
|
|
If you don't find your answer here, there are two cases: nobody has done it yet
|
|
or this section needs updating. In both cases, try to
|
|
[open a new issue](https://github.com/skypjack/entt/issues/new) or enter the
|
|
[gitter channel](https://gitter.im/skypjack/entt) and ask your question.
|
|
Probably someone already has an answer for you and we can then integrate this
|
|
part of the documentation.
|
|
|
|
# FAQ
|
|
|
|
## Why is my debug build on Windows so slow?
|
|
|
|
`EnTT` is an experimental project that I also use to keep me up-to-date with the
|
|
latest revision of the language and the standard library. For this reason, it's
|
|
likely that some classes you're working with are using standard containers under
|
|
the hood.<br/>
|
|
Unfortunately, it's known that the standard containers aren't particularly
|
|
performing in debugging (the reasons for this go beyond this document) and are
|
|
even less so on Windows apparently. Fortunately this can also be mitigated a
|
|
lot, achieving good results in many cases.
|
|
|
|
First of all, there are two things to do in a Windows project:
|
|
|
|
* Disable the [`/JMC`](https://docs.microsoft.com/cpp/build/reference/jmc)
|
|
option (_Just My Code_ debugging), available starting in Visual Studio 2017
|
|
version 15.8.
|
|
|
|
* Set the [`_ITERATOR_DEBUG_LEVEL`](https://docs.microsoft.com/cpp/standard-library/iterator-debug-level)
|
|
macro to 0. This will disable checked iterators and iterator debugging.
|
|
|
|
Moreover, the macro `ENTT_DISABLE_ASSERT` should be defined to disable internal
|
|
checks made by `EnTT` in debug. These are asserts introduced to help the users,
|
|
but require to access to the underlying containers and therefore risk ruining
|
|
the performance in some cases.
|
|
|
|
With these changes, debug performance should increase enough for most cases. If
|
|
you want something more, you can can also switch to an optimization level `O0`
|
|
or preferably `O1`.
|