Programming note

From Ultracopier wiki
Jump to: navigation, search

Thread

  • Windows and Linux have different reaction on thread, crash at different place, ...
  • Windows is very more slow than linux to create thread, then in case of lot of thread (like copy engine 0.3), that's can product slow down

Transfer list format

Format: Ultracopier;Transfer-list;[Mode];[Copy engine]

  • Format to save the transfer list (into *.lst) for copy:
Ultracopier;Transfer-list;Copy;Ultracopier
/home/user/sources.txt;/home/user/destination.txt
  • Format to save the transfer list (into *.lst) for move:
Ultracopier;Transfer-list;Move;Ultracopier
/home/user/sources.txt;/home/user/destination.txt
  • Format to save the transfer list (into *.lst) for transfer:
Ultracopier;Transfer-list;Transfer;Ultracopier
Copy;/home/user/sources.txt;/home/user/destination.txt
Move;/home/user/sources.txt;/home/user/destination.txt

Note: use http://doc.qt.io/qt-5/qiodevice.html#readLine mean the line endings should be correct and match to "\n", then linux endings.

Loop

  • QList::at() or QList::operator[] seam depends of the list size, mcount called into the libc.so under linux, it's very slow on lot of case (and 70% of cpu usage). It's better try not use it with Qt on code which need performance.

Concurrency

  • When the concurrency is too high the latency of the system will be increasing, in this case you need do proportional concurrency limitation.
  • If the latency is constant if your augment the concurrency, then you are not at the limit where the system is limited by the concurrency

GUI

  • The transfer engine need have any direct link with the GUI, else both will block mutually. It's why the list thread which can be done into the GUI thread is not do into it. To not have latency for file copy, or latency to display.
  • [Qt] The large commit to QTreeWidget is very slow (>250 000 new items), QTreeView will be correct
  • [Qt] To have scroll without lag/free, uniform row height need be enabled (then Qt calculate the scroll by size of row * number of row, and not parse each row height to add it)
  • [Linux] The open source driver if very very more slow to show a pixel, then flood text change on QLabel, or other like would be lag/freeze the application under linux. Possible solution with wayland.