PM123's Performance Settings

Screenshot

Worker Threads

PM123 uses worker threads to decouple I/O operations from the user interface. More workers can do more tasks in parallel, but this is not necessarily faster, because of other limited system resources, first of all the disk I/O. It is recommended to have at least 2 workers and no more than 6 (in all).

There are two kinds of tasks to perform:
  1. Dialog tasks
    Dialog tasks do I/O operations where the user is typically waiting for, e.g. loading a playlist that is just opened for editing.
  2. Background tasks
    Background tasks do I/O operations that are not indispensable to user actions like fetching the total playing time of a large playlist.
Gerneral purpose
Number of general purpose worker threads. The general purpose workers can do both kind of tasks. The more general purpose workers you have, the higher is the I/O load. You need at least one general purpose worker.
Dialog
Number of dialog worker threads. The dialog workers are reserved for dialog tasks to keep the user interface always responsive. It is recommended to have at least one dialog worker. More than one dialog worker makes sense if you often have to deal with network timeouts or something like that. A second worker will keep PM123 responsive while the first one is trying to perform some task to no avail.
Lower priority background tasks
This option causes background tasks to be executed at idle time priority. This keep the system more responsive during heavy load.

Decoder Priority

PM123 dynamically adjusts the priority of decoder threads to keep the sound playing without too much delays to user interactions.

At normal play
The normal priority of the decoder thread is used by default.
At low buffer
The priority of the decoder thread is raised to this level when the output buffers become empty.
Lower priority after
If you have a slow CPU and activated many filter plug-ins. The CPU might no longer be able to decode the song in real-time. This could effectively freeze the UI because of the high priority of the decoder thread. This setting lowers the priority after some time to get the system back.