Data preferences ================ Ever wondered whether one should approach problem X with data structure Y or Z? This article covers a variety of topics related to these dilemmas. Note: This article makes references to "[something]-time" operations. This terminology comes from algorithm analysis' `Big O Notation ( https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ )`. Long-story short, it describes the worst-case scenario of runtime length. In laymen's terms: "As the size of a problem domain increases, the runtime length of the algorithm..." - Constant-time, `O(1)`: "...does not increase." - Logarithmic-time, `O(log n)`: "...increases at a slow rate." - Linear-time, `O(n)`: "...increases at the same rate." - Etc. Imagine if one had to process 3 million data points within a single frame. It would be impossible to craft the feature with a linear-time algorithm since the sheer size of the data would increase the runtime far beyond the time allotted. In comparison, using a constant-time algorithm could handle the operation without issue. By and large, developers want to avoid engaging in linear-time operations as much as possible. But, if one keeps the scale of a linear-time operation small, and if one does not need to perform the operation often, then it may be acceptable. Balancing these requirements and choosing the right algorithm / data structure for the job is part of what makes programmers' skills valuable. Array vs. Dictionary vs. Object ------------------------------- Pandemonium stores all variables in the scripting API in the `Variant ( https://docs.pandemoniumengine.org/en/latest/development/cpp/variant_class.html )` class. Variants can store Variant-compatible data structures such as `Array` as well as `Object` s. Pandemonium implements Array as a `Vector