PR #3279 - revert to non RVO code

This commit is contained in:
godeffroy 2020-08-31 09:54:38 +02:00
parent 59c73f1c46
commit e9466160c7
3 changed files with 8 additions and 10 deletions

View File

@ -232,7 +232,7 @@ DecoderState::decode(size_t num_results) const
for (PathTrie* prefix : prefixes_copy) {
Output output;
output.tokens = prefix->get_path_vec();
prefix->get_path_vec(output.tokens);
output.timesteps = prefix->timesteps;
output.confidence = scores[prefix];
outputs.push_back(output);

View File

@ -99,15 +99,13 @@ PathTrie* PathTrie::get_path_trie(unsigned int new_char, float cur_log_prob_c, b
}
}
std::vector<unsigned int> PathTrie::get_path_vec() {
if (parent == nullptr) {
return std::vector<unsigned int>{};
void PathTrie::get_path_vec(std::vector<unsigned int>& output) {
// Recursive call: recurse back until stop condition, then append data in
// correct order as we walk back down the stack in the lines below.
if (parent != nullptr) {
parent->get_path_vec(output);
output.push_back(character);
}
std::vector<unsigned int> output_tokens=parent->get_path_vec();
if (character != ROOT_) {
output_tokens.push_back(character);
}
return output_tokens;
}
PathTrie* PathTrie::get_prev_grapheme(std::vector<unsigned int>& output,

View File

@ -24,7 +24,7 @@ public:
PathTrie* get_path_trie(unsigned int new_char, float log_prob_c, bool reset = true);
// get the prefix data in correct time order from root to current node
std::vector<unsigned int> get_path_vec();
void get_path_vec(std::vector<unsigned int>& output);
// get the prefix data in correct time order from beginning of last grapheme to current node
PathTrie* get_prev_grapheme(std::vector<unsigned int>& output,