-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
Repl 2023-11-13, Repl 2023-11-27
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
-
None
The IDL parser generator produces code of the form var.checkAndAssertTypes("Context", {BSONType1, BSONType2, ...}) , i.e. it produces code where a BSONType[] is passed to checkAndAssertTypes(). However, since this function expects a vector, the BSONType[] is repeatedly converted to a vector and then destroyed right after the function call.
Instead we can pass in pointers and make this a lot quicker to avoid many allocations and frees.
In the attached screenshots, the functions highlighted in purple represent amount of time spent doing this. The more elaborate screenshot is from a debug build, and there we see that the construction & destruction of vectors take about 40% of parse time. In the opt=on build, the construction & destruction take 20% of the total time