Przeglądaj źródła

speed up PNG generation by deactivating console.log when --debug not used (#670)

add filterRegex option 'allSmall' to skip large files
sschmid 5 lat temu
rodzic
commit
0ead313f28
2 zmienionych plików z 17 dodań i 9 usunięć
  1. 4 4
      package.json
  2. 13 5
      test/Util/generateImages_browserless.js

+ 4 - 4
package.json

@@ -18,16 +18,16 @@
     "build:webpack-dev": "webpack --progress --colors --config webpack.dev.js",
     "build:webpack-sourcemap": "webpack --progress --colors --config webpack.sourcemap.js",
     "start": "webpack-dev-server --progress --colors --config webpack.dev.js",
-    "generatePNG": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export",
+    "generatePNG": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export 0 0",
     "generatePNG:single": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export 0 0 ^Beethoven",
     "generatePNG:puppeteer": "node ./test/Util/generateDiffImagesPuppeteerLocalhost.js ./test/data ./export 0 0 all",
     "generatePNG:puppeteer:single": "node ./test/Util/generateDiffImagesPuppeteerLocalhost.js ./test/data ./export 0 0 ^Beethoven",
-    "generatePNG:paged": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export 210 297 all",
+    "generatePNG:paged": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export 210 297 allSmall",
     "generatePNG:paged:debug": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export 210 297 all --debug 5000",
     "generatePNG:paged:single": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./export 0 0 ^Beethoven",
-    "generate:current": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./visual_regression/current 0 0 all --debug",
+    "generate:current": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./visual_regression/current 0 0 allSmall",
     "generate:current:singletest": "node test/Util/generateImages_browserless.js ../../build ./test/data ./visual_regression/current 0 0 .*function_test_all.*",
-    "generate:blessed": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./visual_regression/blessed",
+    "generate:blessed": "node ./test/Util/generateImages_browserless.js ../../build ./test/data ./visual_regression/blessed 0 0 allSmall",
     "test:visual": "sh ./test/Util/visual_regression.sh ./visual_regression",
     "test:visual:singletest": "sh ./test/Util/visual_regression.sh ./visual_regression OSMD_function_test_all",
     "fix-memory-limit": "cross-env NODE_OPTIONS=--max_old_space_size=4096"

+ 13 - 5
test/Util/generateImages_browserless.js

@@ -24,9 +24,10 @@ async function init () {
 
     let [osmdBuildDir, sampleDir, imageDir, pageWidth, pageHeight, filterRegex, debugFlag, debugSleepTimeString] = process.argv.slice(2, 10)
     if (!osmdBuildDir || !sampleDir || !imageDir) {
-        console.log('usage: node test/Util/generateImages_browserless.js osmdBuildDir sampleDirectory imageDirectory [width|0] [height|0] [filterRegex|all] [--debug] [debugSleepTime]')
+        console.log('usage: ' +
+            'node test/Util/generateImages_browserless.js osmdBuildDir sampleDirectory imageDirectory [width|0] [height|0] [filterRegex|all|allSmall] [--debug] [debugSleepTime]')
         console.log('  (use "all" to skip filterRegex parameter)')
-        console.log('example: node test/Util/generateImages_browserless.js ../../build ./test/data/ ./export 210 297 all --debug 5000')
+        console.log('example: node test/Util/generateImages_browserless.js ../../build ./test/data/ ./export 210 297 allSmall --debug 5000')
         console.log('Error: need sampleDir and imageDir. Exiting.')
         process.exit(1)
     }
@@ -44,6 +45,7 @@ async function init () {
     const DEBUG = debugFlag === '--debug'
     // const debugSleepTime = Number.parseInt(process.env.GENERATE_DEBUG_SLEEP_TIME) || 0; // 5000 works for me [sschmidTU]
     if (DEBUG) {
+        console.log('  note that --debug slows down the script by about 0.3s per file (through console.logs).')
         console.log('debug sleep time: ' + debugSleepTimeString)
         const debugSleepTimeMs = Number.parseInt(debugSleepTimeString)
         if (debugSleepTimeMs > 0) {
@@ -130,6 +132,10 @@ async function init () {
     })
     debug('div.offsetWidth: ' + div.offsetWidth, DEBUG)
     debug('div.height: ' + div.height, DEBUG)
+    if (!DEBUG) {
+        // deactivate console logs (mostly)
+        console.log = (msg) => {}
+    }
     // ---- end browser hacks (hopefully) ----
 
     const OSMD = require(`${osmdBuildDir}/opensheetmusicdisplay.min.js`)
@@ -141,8 +147,8 @@ async function init () {
     const sampleDirFilenames = fs.readdirSync(sampleDir)
     let samplesToProcess = [] // samples we want to process/generate pngs of, excluding the filtered out files/filenames
     for (const sampleFilename of sampleDirFilenames) {
-        if (DEBUG) {
-            if (sampleFilename.match('^(Actor)|(Gounod)')) {
+        if (filterRegex === 'allSmall') {
+            if (sampleFilename.match('^(Actor)|(Gounod)')) { // TODO maybe filter by file size instead
                 console.log('DEBUG: filtering big file: ' + sampleFilename)
                 continue
             }
@@ -157,7 +163,7 @@ async function init () {
     }
 
     // filter samples to process by regex if given
-    if (filterRegex && filterRegex !== '' && filterRegex !== 'all') {
+    if (filterRegex && filterRegex !== '' && filterRegex !== 'all' && filterRegex !== 'allSmall') {
         console.log('filtering samples for regex: ' + filterRegex)
         samplesToProcess = samplesToProcess.filter((filename) => filename.match(filterRegex))
         console.log(`found ${samplesToProcess.length} matches: `)
@@ -178,6 +184,8 @@ async function init () {
         // console.log(`osmd PageFormat: ${osmdInstance.EngravingRules.PageFormat.width}x${osmdInstance.EngravingRules.PageFormat.height}`)
         console.log(`osmd PageFormat idString: ${osmdInstance.EngravingRules.PageFormat.idString}`)
         console.log('PageHeight: ' + osmdInstance.EngravingRules.PageHeight)
+    } else {
+        osmdInstance.setLogLevel('info') // doesn't seem to work, log.debug still logs
     }
 
     debug('generateImages', DEBUG)