aboutsummaryrefslogtreecommitdiff
path: root/test/benchmark.js
blob: 74ac84be48b749927561c092864ac2f5bf0dcaae (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#! /usr/bin/env node
// -*- js -*-

"use strict";

var createHash = require("crypto").createHash;
var fetch = require("./fetch");
var spawn = require("child_process").spawn;
var zlib = require("zlib");
var args = process.argv.slice(2);
if (!args.length) args.push("-mc");
args.unshift("bin/uglifyjs");
args.push("--timings");
var urls = [
    "https://code.jquery.com/jquery-3.4.1.js",
    "https://code.angularjs.org/1.7.8/angular.js",
    "https://unpkg.com/mathjs@6.2.3/dist/math.js",
    "https://unpkg.com/react@15.3.2/dist/react.js",
    "https://cdnjs.cloudflare.com/ajax/libs/d3/5.12.0/d3.js",
    "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js",
    "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js",
    "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.12.2/ember.prod.js",
    "https://raw.githubusercontent.com/kangax/html-minifier/v4.0.0/dist/htmlminifier.js",
];
var results = {};
var remaining = 2 * urls.length;
function done() {
    if (!--remaining) {
        var failures = [];
        var sum = { input: 0, output: 0, gzip: 0 };
        urls.forEach(function(url) {
            var info = results[url];
            console.log();
            console.log(url);
            console.log(info.log);
            console.log("Original:", info.input, "bytes");
            console.log("Uglified:", info.output, "bytes");
            console.log("GZipped: ", info.gzip, "bytes");
            console.log("SHA1 sum:", info.sha1);
            if (info.code) {
                failures.push(url);
            }
            sum.input += info.input;
            sum.output += info.output;
            sum.gzip += info.gzip;
        });
        if (failures.length) {
            console.error("Benchmark failed:");
            failures.forEach(function(url) {
                console.error(url);
            });
            process.exit(1);
        } else {
            console.log();
            console.log("Subtotal");
            console.log();
            console.log("Original:", sum.input, "bytes");
            console.log("Uglified:", sum.output, "bytes");
            console.log("GZipped: ", sum.gzip, "bytes");
        }
    }
}
urls.forEach(function(url) {
    results[url] = {
        input: 0,
        output: 0,
        gzip: 0,
        log: ""
    };
    fetch(url, function(err, res) {
        if (err) throw err;
        var uglifyjs = spawn(process.argv[0], args, { silent: true });
        res.on("data", function(data) {
            results[url].input += data.length;
        }).pipe(uglifyjs.stdin);
        var sha1 = createHash("sha1");
        uglifyjs.stdout.on("data", function(data) {
            results[url].output += data.length;
        }).pipe(zlib.createGzip({
            level: zlib.Z_BEST_COMPRESSION
        })).on("data", function(data) {
            results[url].gzip += data.length;
            sha1.update(data);
        }).on("end", function() {
            results[url].sha1 = sha1.digest("hex");
            done();
        });
        uglifyjs.stderr.setEncoding("utf8");
        uglifyjs.stderr.on("data", function(data) {
            results[url].log += data;
        });
        uglifyjs.on("exit", function(code) {
            results[url].code = code;
            done();
        });
    });
});
xports. Marius Bakke 2020-11-28services: MySQL: Upgrade database schemas automatically....* gnu/services/databases.scm (<mysql-configuration>): Add AUTO-UPGRADE? field. (mysql-upgrade-wrapper, mysql-upgrade-shepherd-service, mysql-shepherd-services): New variables. (mysql-service-type): Use MYSQL-SHEPHERD-SERVICES instead of MYSQL-SHEPHERD-SERVICE. * doc/guix.texi (Database Services): Document the AUTO-UPGRADE? field of MYSQL-SERVICE-TYPE. * gnu/tests/databases.scm (run-mysql-test): Test that mysql_upgrade has run. Marius Bakke 2020-11-28services: MySQL: Make the socket configurable....* gnu/services/databases.scm (<mysql-configuration>): Add SOCKET field. (mysql-configuration-file): Adjust accordingly. * doc/guix.texi (Database Services): Likewise. Marius Bakke 2020-11-28services: MySQL: Bind to localhost only by default....* gnu/services/databases.scm (<mysql-configuration>): Add BIND-ADDRESS field. (mysql-configuration-file): Adjust accordingly. * doc/guix.texi (Database Services): Document it. Marius Bakke 2020-11-28services: MySQL: Deprecate 'mysql-service'....* gnu/services/databases.scm (mysql-service): Define in terms of DEFINE-DEPRECATED. * gnu/tests/databases.scm (%mysql-os): Adjust accordingly. * doc/guix.texi (Database Services): Adjust the MariaDB/MySQL section to document MYSQL-SERVICE-TYPE instead of MYSQL-SERVICE. While at it, document the EXTRA-CONTENT field. Marius Bakke 2020-10-20services: databases: Don't specify a default postgresql version....Currently, if the postgresql package major version changes, this is going to break the service upon upgrade, because PostgreSQL will reject the data files from the differing major version of the service. Because it's important to either keep running a particular major version, or intentionally upgrade, I think the configuration would be better with no default. I think this is also going to be helpful when trying to assist users upgrading PostgreSQL. * gnu/services/databases.scm (<postgresql-configuration>): Remove default for postgresql. (postgresql-service-type): Remove the default value. * gnu/tests/databases.scm (%postgresql-os): Update accordingly. * gnu/tests/guix.scm (%guix-data-service-os): Update accordingly. * gnu/tests/monitoring.scm (%zabbix-os): Update accordingly. * gnu/tests/web.scm (patchwork-os): Update accordingly. * doc/guix.texi (PostgreSQL): Update accordingly. Christopher Baines 2020-10-20services: databases: Deprecate the postgresql-service procedure....Using the service type directly is a better approach, making it easier to configure the service. * gnu/services/databases.scm (postgresql-service): Deprecate this procedure. * doc/guix.texi (PostgreSQL): Update the documentation for the use of (service postgresql-service-type). Christopher Baines 2020-08-01services: postgresql: Provide postgresql commands....* gnu/services/databases.scm (postgresql-service-type): Extend profile-service-type to provide postgresql commands. Pierre Neidhardt 2020-01-17gnu: services: Allow extra content in mysql configuration....* gnu/services/databases.scm (<mysql-configuration>): New field. (mysql-configuration-file): Use it. Alex Sassmannshausen 2020-01-14gnu: services: Fix mysql service activation....This change is necessary after the split of mariadb outputs. * gnu/services/databases.scm (%mysql-activation): Use mysql:lib in mariadb-specific part. Julien Lepiller 2019-07-02gnu: postgres service: More secure default permissions....This changes to 'peer' authentication for local socket connections, and password-based authentication for local network connections. * gnu/services/databases.scm (%default-postgres-hba): Change authentication method. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Robert Vollmert 2018-10-04gnu: postgresql: Add extension-packages....* gnu/services/databases.scm (postgresql-configuration): Add extension-packages. (postgresql-shepherd-service): New key #:extension-packages. * doc/guix.texi (Database Services): Document it. Julien Lepiller 2018-08-13services: postgresql: Get the Shepherd to respawn PostgreSQL....* gnu/services/databases.scm (postgresql-shepherd-service): Change 'start' to return the PID. Clément Lassieur 2018-03-17services: databases: Change quote' to single-quote....In the postgresql-config-file gexp compiler. * gnu/services/databases.scm (postgresql-config-file-compiler): Change quote' to single-quote. Christopher Baines 2018-03-10services: databases: Add postgresql-configuration record exports....* gnu/services/databases.scm: Export the record type, and all the field accessors. Christopher Baines 2018-03-10services: Rework the PostgreSQL config file to use a record type....For the default config file representation. This makes it possible to more easily change the configuration file, and have dynamic content. * gnu/services/databases.scm (<postgresql-config-file>): New record type. (%default-postgres-config): Remove this, it's been replaced by the configuration file. (<postgresql-configuration>): Alter the default for the config file field. (postgresql-service): Alter the default value for the config-file parameter. Christopher Baines 2018-03-03services: redis: Add a default-value to the redis-service-type....* gnu/packages/databases.scm (redis-service-type)[default-value]: Set to (redis-configuration). Christopher Baines 2018-03-03services: mysql: Add a default-value to the mysql-service-type....* gnu/services/databases.scm (mysql-service-type)[default-value]: Set to (mysql-configuration). Christopher Baines 2018-03-03services: postgresql: Add a default-value to the postgresql-service-type....* gnu/packages/databases.scm (<postgresql-configuration>) [config-file,data-directory]: Add default. (postgresql-service-type)[default-value]: Set to (postgresql-configuration). Christopher Baines 2018-01-25services: postgresql: Use pg_ctl to start and stop postgres....Fixes <https://bugs.gnu.org/29992>. * gnu/services/databases.scm (postgresql-shepherd-service): Replace make-forkexec-constructor and make-kill-destructor with pg_ctl. Clément Lassieur