jak-project/common/util/trie_with_duplicates.h

147 lines
4.3 KiB
C
Raw Normal View History

goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
#pragma once
#include <array>
#include <memory>
#include <string>
#include <vector>
// A normal Trie does not allow for duplicate keys, however this one does
// It allows for insertion and removal
template <typename T>
class TrieWithDuplicates {
private:
struct TrieNode {
std::array<std::unique_ptr<TrieNode>, 256> children;
std::vector<std::unique_ptr<T>> elements;
};
std::unique_ptr<TrieNode> root = std::make_unique<TrieNode>();
public:
TrieWithDuplicates() {}
T* insert(const std::string& key, const T& element) {
std::unique_ptr<T> new_element = std::make_unique<T>(element);
TrieNode* curr_node = root.get();
for (const char character : key) {
auto& child = curr_node->children[(uint8_t)character];
if (!child) {
child = std::make_unique<TrieNode>();
}
curr_node = child.get();
}
curr_node->elements.push_back(std::move(new_element));
return curr_node->elements.back().get();
}
std::vector<T*> retrieve_with_prefix(const std::string& prefix, int max_count = -1) const {
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
std::vector<T*> results;
TrieNode* curr_node = root.get();
for (const char character : prefix) {
if (max_count >= 0 && (int)results.size() > max_count) {
return results;
}
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
const auto& child = curr_node->children.at((uint8_t)character);
if (child == nullptr) {
return results; // tree ends, nothing found with that prefix
} else {
curr_node = child.get();
}
}
retrieve_elements(curr_node, results, max_count);
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
return results;
}
std::vector<T*> retrieve_with_exact(const std::string& key) const {
std::vector<T*> results;
TrieNode* curr_node = root.get();
for (const char character : key) {
const auto& child = curr_node->children.at((uint8_t)character);
if (child == nullptr) {
return results; // tree ends, nothing found with that key
} else {
curr_node = child.get();
}
}
for (const auto& element : curr_node->elements) {
results.push_back(element.get());
}
return results;
}
bool remove(const std::string& key, const T* to_be_removed) {
TrieNode* curr_node = root.get();
for (const char character : key) {
const auto& child = curr_node->children.at((uint8_t)character);
if (child == nullptr) {
return false; // tree ends, nothing found with that key
} else {
curr_node = child.get();
}
}
// Since the trie holds duplicates, we can't delete on the key alone
// now search to see which element is identical
auto it = curr_node->elements.begin();
while (it != curr_node->elements.end()) {
if (it->get() == to_be_removed) {
it = curr_node->elements.erase(it);
return true; // we can assume that the same ptr isn't stored twice.
} else {
++it;
}
}
return false;
}
// Return the total number of elements stored in the TrieMap
int size() const {
int count = 0;
count_elements(root.get(), count);
return count;
}
std::vector<T*> get_all_elements() const {
std::vector<T*> results;
get_all_elements_helper(root.get(), results);
return results;
}
private:
void retrieve_elements(const TrieNode* node, std::vector<T*>& results, int max_count = -1) const {
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
for (const auto& element : node->elements) {
if (max_count >= 0 && (int)results.size() > max_count) {
return;
}
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
results.push_back(element.get());
}
for (const auto& child : node->children) {
if (max_count >= 0 && (int)results.size() > max_count) {
return;
}
if (child.get() != nullptr) {
retrieve_elements(child.get(), results, max_count);
}
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
}
}
void count_elements(const TrieNode* node, int& count) const {
count += node->elements.size();
for (const auto& child : node->children) {
if (child.get() != nullptr) {
count_elements(child.get(), count);
}
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
}
}
void get_all_elements_helper(const TrieNode* node, std::vector<T*>& result) const {
for (const auto& element : node->elements) {
result.push_back(element.get());
}
for (const auto& child : node->children) {
if (child.get() != nullptr) {
get_all_elements_helper(child.get(), result);
}
goalc: Fix new symbol trie's performance inefficiencies (#3443) I believe this brings things back in line to where it was before: Here are the first handful of files before the changes: ``` 0.014 | gcommon.gc 0.006 | gkernel-h.gc 0.025 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.004 | gstate.gc 0.001 | kernel.gd 0.001 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.01 | vector-h.gc 0.001 | gravity-h.gc 0.001 | bounding-box-h.gc 0.001 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > first compile ``` 0.161 | gcommon.gc 0.126 | gkernel-h.gc 0.174 | gkernel.gc 0.046 | pskernel.gc 0.08 | gstring.gc 0.048 | gstate.gc 0.001 | kernel.gd 0.052 | types-h.gc 0.009 | vu1-macros.gc 0.059 | math.gc 0.228 | vector-h.gc 0.026 | gravity-h.gc 0.006 | bounding-box-h.gc 0.002 | matrix-h.gc 0.028 | quaternion-h.gc 0.026 | euler-h.gc ``` > make a change in gcommon and recompile With the changes: ``` 0.015 | gcommon.gc 0.018 | gkernel-h.gc 0.039 | gkernel.gc 0.006 | pskernel.gc 0.015 | gstring.gc 0.009 | gstate.gc 0.005 | kernel.gd 0.006 | types-h.gc 0.006 | vu1-macros.gc 0.008 | math.gc 0.017 | vector-h.gc 0.004 | gravity-h.gc 0.004 | bounding-box-h.gc 0.005 | matrix-h.gc 0.005 | quaternion-h.gc 0.003 | euler-h.gc ``` > First compile, no difference expected ``` 0.016 | gcommon.gc 0.008 | gkernel-h.gc 0.023 | gkernel.gc 0.002 | pskernel.gc 0.01 | gstring.gc 0.043 | gstate.gc 0.001 | kernel.gd 0.002 | types-h.gc 0.002 | vu1-macros.gc 0.003 | math.gc 0.013 | vector-h.gc 0.001 | gravity-h.gc 0.002 | bounding-box-h.gc 0.002 | matrix-h.gc 0.001 | quaternion-h.gc 0.001 | euler-h.gc ``` > Compile times seem to be back within margin of error -- some are faster than the first compilation time.
2024-04-01 18:56:55 -04:00
}
}
};