History

Add JS profiling API

Karol Suprynowicz committed 3 years ago

Commit a84c68f1 parent 47ec27f6 files · +144 −2Browse files

Showing the changes to libraries/script-engine/src/ScriptManagerScriptingInterface.h (1 of 6 files). Show all

Unified · Split

libraries/script-engine/src/ScriptManagerScriptingInterface.h+28−1
@@ -529,6 +529,34 @@ public: · 528 unmodified lines
529529 */
530530 Q_INVOKABLE ScriptValue createGarbageCollectorDebuggingObject();
531531
532+ /*@jsdoc
533+ * Starts collecting profiling data
534+ * @function Script.startProfiling
535+ */
536+ Q_INVOKABLE void startProfiling();
537+
538+ /*@jsdoc
539+ * Stops collecting profiling data and writes them to a timestamped CSV file in Logs directory.
540+ * @function Script.stopProfilingAndSave
541+ * @example <caption>Collect profiling data from a script.</caption>
542+ * Script.startProfiling();
543+ * workFunc1();
544+ * Script.stopProfilingAndSave();
545+ *
546+ * function workFunc1() {
547+ * for (var i=0; i<100000; i++) {
548+ * var vec1 = {x: i, y: i+1, z: i+2};
549+ * var vec2 = {x: i+3, y: i+4, z: i+5};
550+ * workFunc2(vec1, vec2);
551+ * }
552+ * };
553+ * function workFunc2(vec1, vec2) {
554+ * var cross = Vec3.cross(vec1, vec2);
555+ * var dot = Vec3.dot(vec1, vec2);
556+ * };
557+ */
558+ Q_INVOKABLE void stopProfilingAndSave();
559+
532560 signals:
533561
534562 /*@jsdoc
@@ -705,7 +733,6 @@ signals: · 170 unmodified lines
705733 */
706734 void unhandledException(const ScriptValue& exception);
707735
708−
709736 protected:
710737 /*@jsdoc
711738 * @function Script.executeOnScriptThread