mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-20 13:17:54 -06:00
Optimization of the configuration layer:
The values of StaticPrintConfig derived objects were searched by a name walking through a huge chained if. Now they are being mapped with a std::map. Also initialization of StaticPrintConfig classes from their ConfigOptionDef defaults is done by maintaining a single global definition of each StaticPrintConfig derived class, and a new instance is initialized from this static copy. Also the ConfigOption instances are casted using static_cast wherever possible, and their types are verified by a virtual type() method. This approach avoids insiginificant performance penalty of a dynamic_cast. Also the compare and clone methods were added to ConfigOption, and the cloning & compare work on binary values, not by serialization.
This commit is contained in:
parent
a91d7cb2f7
commit
3731820c48
14 changed files with 1475 additions and 934 deletions
|
@ -64,7 +64,7 @@ void PlaceholderParser::update_timestamp()
|
|||
void PlaceholderParser::apply_config(const DynamicPrintConfig &config)
|
||||
{
|
||||
for (const t_config_option_key &opt_key : config.keys()) {
|
||||
const ConfigOptionDef* def = config.def->get(opt_key);
|
||||
const ConfigOptionDef* def = config.def()->get(opt_key);
|
||||
if (def->multiline || opt_key == "post_process")
|
||||
continue;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue