функции:
Storage::StorageRecord* find(std::string_view name) const
{
auto it = m_inner_scopes.find(crc32::create(name.data()));
if (it == m_inner_scopes.end() || it->second.depth > m_scope_depth)
return nullptr;
return &it->second;
}
std::shared_ptr lookup(std::string_view name) const
{
auto found_data = find(name);
if (found_data)
return found_data->payload;
else
throw SemanticError("Variable not found: " + std::string(name));
}
и огромный процент процессорного времени съедает __cxa_throw. Хотя в действительности исключения из неё не кидается ни разу во время выполнения. Почему это работает так медленно?
А уверен что не внутри crc32?
Обсуждают сегодня