From 50f43d955a2a6fa8ddc6e6a55b8b7995fee5e27d Mon Sep 17 00:00:00 2001 From: Atul R Date: Tue, 17 Mar 2020 00:17:15 +0100 Subject: [PATCH] adds memoization and perf fixes (#450) * adds memoization and perf fixes * 0.16.1 --- package-lock.json | 7 ++++++- package.json | 3 ++- src/lib/QtWidgets/QWidget.ts | 4 ++++ src/lib/utils/helpers.ts | 11 ++++++----- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a161e401..61cd57058 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@nodegui/nodegui", - "version": "0.16.0", + "version": "0.16.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -5598,6 +5598,11 @@ "integrity": "sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==", "dev": true }, + "memoize-one": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", + "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" + }, "memory-stream": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", diff --git a/package.json b/package.json index 2e8497036..a7a5e41e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nodegui/nodegui", - "version": "0.16.0", + "version": "0.16.1", "description": "A cross platform library to build native desktop apps.", "main": "dist/index.js", "typings": "dist/index.d.ts", @@ -33,6 +33,7 @@ "cross-env": "^7.0.0", "cuid": "^2.1.6", "manage-path": "^2.0.0", + "memoize-one": "^5.1.1", "node-addon-api": "^2.0.0", "postcss-nodegui-autoprefixer": "0.0.7", "prebuild-install": "^5.3.3" diff --git a/src/lib/QtWidgets/QWidget.ts b/src/lib/QtWidgets/QWidget.ts index 6e99bc63e..730654151 100644 --- a/src/lib/QtWidgets/QWidget.ts +++ b/src/lib/QtWidgets/QWidget.ts @@ -14,6 +14,7 @@ import { QRect } from '../QtCore/QRect'; import { QObjectSignals } from '../QtCore/QObject'; import { QFont } from '../QtGui/QFont'; import { QAction } from './QAction'; +import memoizeOne from 'memoize-one'; /** @@ -56,6 +57,9 @@ export abstract class NodeWidget extends YogaWid constructor(native: NativeElement) { super(native); this.actions = new Set(); + this.setStyleSheet = memoizeOne(this.setStyleSheet); + this.setInlineStyle = memoizeOne(this.setInlineStyle); + this.setObjectName = memoizeOne(this.setObjectName); } show(): void { this.native.show(); diff --git a/src/lib/utils/helpers.ts b/src/lib/utils/helpers.ts index d17c61c10..a8508165c 100644 --- a/src/lib/utils/helpers.ts +++ b/src/lib/utils/helpers.ts @@ -10,14 +10,15 @@ export function checkIfNapiExternal(arg: any): boolean { return addon.NUtils.isNapiExternal(arg); } -function noop(): void { - return; -} +// function noop(): void { +// return; +// } export const wrapWithActivateUvLoop = (func: Function) => { return (...args: any[]): any => { - const activateUvLoop = (process as any).activateUvLoop || noop; - activateUvLoop(); + // Temporarily removing activateUvLoop + // const activateUvLoop = (process as any).activateUvLoop || noop; + // activateUvLoop(); return func(...args); }; };