1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-23 00:04:06 +00:00

perf: use small::unordered_map in tr_torrent::primary_mime_type() (#5722)

This commit is contained in:
Charles Kerr 2023-07-04 09:40:36 -05:00 committed by GitHub
parent 7c7771a12b
commit e68b76bc14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -13,7 +13,6 @@
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <string_view> #include <string_view>
#include <unordered_map>
#include <utility> #include <utility>
#include <vector> #include <vector>
@ -27,6 +26,8 @@
#include <fmt/chrono.h> #include <fmt/chrono.h>
#include <fmt/core.h> #include <fmt/core.h>
#include <small/map.hpp>
#include "libtransmission/transmission.h" #include "libtransmission/transmission.h"
#include "libtransmission/announcer.h" #include "libtransmission/announcer.h"
@ -2248,7 +2249,7 @@ std::string_view tr_torrent::primary_mime_type() const
// count up how many bytes there are for each mime-type in the torrent // count up how many bytes there are for each mime-type in the torrent
// NB: get_mime_type_for_filename() always returns the same ptr for a // NB: get_mime_type_for_filename() always returns the same ptr for a
// mime_type, so its raw pointer can be used as a key. // mime_type, so its raw pointer can be used as a key.
auto size_per_mime_type = std::unordered_map<std::string_view, size_t>{}; auto size_per_mime_type = small::unordered_map<std::string_view, size_t, 256U>{};
for (tr_file_index_t i = 0, n = this->file_count(); i < n; ++i) for (tr_file_index_t i = 0, n = this->file_count(); i < n; ++i)
{ {
auto const mime_type = tr_get_mime_type_for_filename(this->file_subpath(i)); auto const mime_type = tr_get_mime_type_for_filename(this->file_subpath(i));