Browse Source

Try to use Protobuf CPP implementation if it is available

The C++ implementation is far faster so should always be
used if available. If not, we log a warning since it makes
a big difference.
Arjen Hiemstra 9 years ago
parent
commit
1140c853d1
2 changed files with 11 additions and 0 deletions
  1. 3 0
      cura/CuraApplication.py
  2. 8 0
      cura_app.py

+ 3 - 0
cura/CuraApplication.py

@@ -134,6 +134,9 @@ class CuraApplication(QtApplication):
         parser.add_argument("--debug", dest="debug-mode", action="store_true", default=False, help="Enable detailed crash reports.")
 
     def run(self):
+        if not "PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION" in os.environ or os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] != "cpp":
+            Logger.log("w", "Using Python implementation of Protobuf, expect bad performance!")
+
         self._i18n_catalog = i18nCatalog("cura");
 
         i18nCatalog.setTagReplacements({

+ 8 - 0
cura_app.py

@@ -4,6 +4,7 @@
 # Cura is released under the terms of the AGPLv3 or higher.
 
 import sys
+import os
 
 def exceptHook(type, value, traceback):
     import cura.CrashHandler
@@ -11,6 +12,13 @@ def exceptHook(type, value, traceback):
 
 sys.excepthook = exceptHook
 
+try:
+    from google.protobuf.pyext import _message
+except ImportError:
+    pass
+else:
+    os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "cpp"
+
 import cura.CuraApplication
 
 if sys.platform == "win32" and hasattr(sys, "frozen"):