diff --git a/test/perf/perf-test.js b/test/perf/perf-test.js new file mode 100644 index 0000000000..d234389921 --- /dev/null +++ b/test/perf/perf-test.js @@ -0,0 +1,84 @@ +// Script for running performance comparison tests in https://jsben.ch/ +sqlFormatter.format( + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);" + + 'select supplier_name,city from (select * from suppliers join addresses on suppliers.address_id=addresses.id) as suppliers where supplier_id>500 order by supplier_name asc,city desc;' + + 'ALTER TABLE Album ADD CONSTRAINT FK_AlbumArtistId FOREIGN KEY (ArtistId) REFERENCES Artist (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION;' + + 'CREATE TABLE Customer ( CustomerId INT NOT NULL AUTO_INCREMENT, FirstName NVARCHAR(40) NOT NULL, LastName NVARCHAR(20) NOT NULL, Company NVARCHAR(80), Address NVARCHAR(70), City NVARCHAR(40), State NVARCHAR(40), Country NVARCHAR(40), PostalCode NVARCHAR(10), Phone NVARCHAR(24), Fax NVARCHAR(24), Email NVARCHAR(60) NOT NULL, SupportRepId INT, CONSTRAINT PK_Customer PRIMARY KEY (CustomerId));' + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Jump Around', 258, 1, 17, 'E. Schrody/L. Muggerud', 217835, 8715653, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Salutations', 258, 1, 17, 'E. Schrody/L. Dimant', 69120, 2767047, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Put Your Head Out', 258, 1, 17, 'E. Schrody/L. Freese/L. Muggerud', 182230, 7291473, 0.99); " + + "INSERT INTO Track (Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice) VALUES ('Top O'' The Morning To Ya', 258, 1, 17, 'E. Schrody/L. Dimant', 216633, 8667599, 0.99); " + + "INSERT INTO Invoice (CustomerId, InvoiceDate, BillingAddress, BillingCity, BillingState, BillingCountry, BillingPostalCode, Total) VALUES (48, '2013/8/2', 'Lijnbaansgracht 120bg', 'Amsterdam', 'VV', 'Netherlands', '1016', 1.98);", + { language: 'mysql' } +);