Commit: f55198da42c048bb1f1aef3c458477a6b47cba56
Author: Jacques Lucke
Date:   Sun Mar 22 16:14:02 2020 +0100
Branches: obj-import-experiments
https://developer.blender.org/rBf55198da42c048bb1f1aef3c458477a6b47cba56

use multithreading for obj parsing

===================================================================

M       source/blender/editors/object/object_obj_import.cc

===================================================================

diff --git a/source/blender/editors/object/object_obj_import.cc 
b/source/blender/editors/object/object_obj_import.cc
index a72850711c5..4ccdad48179 100644
--- a/source/blender/editors/object/object_obj_import.cc
+++ b/source/blender/editors/object/object_obj_import.cc
@@ -25,6 +25,8 @@
 #include "WM_types.h"
 #include "object_intern.h"
 
+#include "tbb/task_group.h"
+
 struct float3 {
   float x, y, z;
 };
@@ -709,19 +711,29 @@ BLI_NOINLINE static void import_obj(bContext *C, 
StringRef file_path)
 
   TextLinesReader reader(input_stream);
 
-  Vector<Vector<std::unique_ptr<ObjFileSegment>>> all_segments;
+  Vector<std::unique_ptr<Vector<std::unique_ptr<ObjFileSegment>>>> 
all_segments;
+
+  tbb::task_group tasks;
+  std::mutex mutex;
 
   while (!reader.eof()) {
-    StringRef text = reader.read_next_line_chunk(50000000);
-    Vector<std::unique_ptr<ObjFileSegment>> segments;
-    parse_obj_lines(text, segments);
+    StringRef text = reader.read_next_line_chunk(20 * 1024 * 1024);
+
+    auto segments = 
BLI::make_unique<Vector<std::unique_ptr<ObjFileSegment>>>();
+    auto segments_ptr = segments.get();
     all_segments.append(std::move(segments));
-    reader.free_chunk(text);
+
+    tasks.run([segments_ptr, text, &reader]() {
+      parse_obj_lines(text, *segments_ptr);
+      reader.free_chunk(text);
+    });
   }
 
+  tasks.wait();
+
   Vector<const ObjFileSegment *> flattened_segments;
   for (auto &segments : all_segments) {
-    for (auto &segment : segments) {
+    for (auto &segment : *segments) {
       flattened_segments.append(segment.get());
     }
   }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to