Page MenuHomePhabricator

Rewrite SceneIO: Threaded Serialization
Closed, WontfixPublic

Description

Description:
Let all serializers work in parallel instead of one after the other.

Justification / Use-Case:
Serialization is perfectly independent. Only assembly in an XML file or generating unique filenames on disk is something that needs synchronization. Threading would make use of today’s multi-core processors and speed up the whole process.

Implementation:
Qt-Concurrent has some pretty features for such serialization. Micro-services use Poco for threading. Open-MP would also be a simple solution.
This topic would be relatively easy to achieve and could improve perceived performance significantly.

Questions:

  1. properties are really small; threading could be overhead instead of speed-up! A thread pool implementation could be performant, however
  2. Disk-IO could be limiting for images and surfaces. If this should be the case, we could limit BaseData-IO to 1 or 2 threads while some 12 others serialize properties.

Related Objects

StatusAssignedTask
Wontfixmaerz
WontfixNone

Event Timeline

maerz added a subscriber: maerz.

Personally, I find it hard to imagine that such a HDD-access heavy task would profit that much from multithreading. Since I lack experience on the matter I am very much willing to concede this point though.

My 2c

  1. Measure the current CPU utilization. Do not guess when thinking about concurrent operations! Reproducible performance measurements are a must for further decisions.
  1. Use a task based approach for the problem at hand. If you can, just use C++11 (VS2013 should be fine).
kislinsk triaged this task as Wishlist priority.Aug 10 2016, 4:28 AM
kislinsk claimed this task.
kislinsk added a project: Auto-closed.
kislinsk added a subscriber: kislinsk.

Hi there! 🙂

This task was auto-closed according to our Task Lifecycle Management.
Please follow this link for more information and don't forget that you are encouraged to reasonable re-open tasks to revive them. 🚑

Best wishes,
The MITK devs

kislinsk removed kislinsk as the assignee of this task.May 26 2020, 12:05 PM
kislinsk removed a subscriber: kislinsk.