1
Support - (fb2k) / Re: Playlists Get Zero'd Out After a Library Search
Last post by Case -Enter wiping the previously active playlist with Library Viewer Selection enabled is definitely a bug.
I think i have the same problem, my cpu is zen2 4650g(6c12t), i got around 280~300x under command line @ single thread with autodidact's clang build or rarewares' gcc build, I also compiled helix myself with clang plus linktime optimization, my version got around 480x. maybe that's the key.To be honest since i did read this i thought you have the same problem as @KevinB52379.
here's the binary, you can try it.
How does foobar multithreaded react on your system with the other builds?
As a sidenote: fast-math + AVX2 gives another nice boost to the fast clang compile.
System:
CPU: AMD Ryzen 9 3900X 12-Core Processor, features: MMX SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX LZCNT
Architecture: x64
App: foobar2000 v2.1.4
Settings:
High priority: no
Buffer entire file into memory: yes
Warm-up: yes
Passes: 3
Threads: 1
Postprocessing: none
Stats by codec:
MP3: 1058.144x realtime
File: Rule 5 - James Picard.mp3
Run 1:
Decoded length: 3:14.640
Opening time: 0:00.001
Decoding time: 0:00.184
Speed (x realtime): 1054.937
Run 2:
Decoded length: 3:14.640
Opening time: 0:00.001
Decoding time: 0:00.184
Speed (x realtime): 1055.695
Run 3:
Decoded length: 3:14.640
Opening time: 0:00.001
Decoding time: 0:00.182
Speed (x realtime): 1063.845
Total:
Opening time: 0:00.001 min, 0:00.001 max, 0:00.001 average
Decoding time: 0:00.182 min, 0:00.184 max, 0:00.183 average
Speed (x realtime): 1054.937 min, 1063.844 max, 1058.143 average
Total:
Decoded length: 9:43.920
Opening time: 0:00.002
Decoding time: 0:00.550
Speed (x realtime): 1058.144
System:
CPU: AMD Ryzen 9 3900X 12-Core Processor, features: MMX SSE SSE2 SSE3 SSE4.1 SSE4.2 AVX LZCNT
Architecture: x64
App: foobar2000 v2.1.4
Settings:
High priority: no
Buffer entire file into memory: yes
Warm-up: yes
Passes: 3
Threads: 1
Postprocessing: none
Stats by codec:
Opus: 539.492x realtime
File: Rule 5 - James Picard.opus
Run 1:
Decoded length: 3:14.640
Opening time: 0:00.000
Decoding time: 0:00.362
Speed (x realtime): 537.041
Run 2:
Decoded length: 3:14.640
Opening time: 0:00.000
Decoding time: 0:00.360
Speed (x realtime): 539.971
Run 3:
Decoded length: 3:14.640
Opening time: 0:00.000
Decoding time: 0:00.359
Speed (x realtime): 541.482
Total:
Opening time: 0:00.000 min, 0:00.000 max, 0:00.000 average
Decoding time: 0:00.359 min, 0:00.362 max, 0:00.361 average
Speed (x realtime): 537.041 min, 541.482 max, 539.491 average
Total:
Decoded length: 9:43.920
Opening time: 0:00.000
Decoding time: 0:01.082
Speed (x realtime): 539.492
void my_menu::context_command(unsigned int p_index, metadb_handle_list_cref p_data, const GUID &p_caller) {
switch (p_index) {
case CMD1: {
auto to_process = p_data | std::views::filter([](auto item) { /* filter by some interested fields */});
// ...
}
namespace pfc {
template<typename arr_t>
class list_const_iterator {
typedef list_const_iterator<arr_t> self_t;
public:
typedef ptrdiff_t difference_type;
typedef typename arr_t::t_item value_type;
typedef const value_type* pointer;
typedef const value_type& reference;
typedef std::random_access_iterator_tag iterator_category;
list_const_iterator(arr_t* arr, size_t index) : m_arr(arr), m_index(index) {}
void operator++() { ++m_index; } // <--
void operator--() { --m_index; }