var jsonEntity = {"ID":1,"MAINSOURCESYSTEM":null,"EXTERNALCODE":"VASCO1","NAME":"","FIRSTNAME":"Vasco","LASTNAME":"Mendes","SEARCHNAME1":"","SEARCHNAME2":"","CONTACTFORM":"Sr.","NIF":"211111111","COUNTRY":"Portugal","D":"","addresses":[{"ID":2,"BPID":1,"ADDRESS1":"Rua Morada 1 do Vasco","ADDRESS2":"Rua Morada 2 do Vasco","NUMBER":"nº 341","LOCALE":"Vale do Porto","POSTCODE":"2496-660","CITY":"Fátima","STATE":"Ourém-Santarém","COUNTRY":"Portugal","ISMAINADDRESS":true,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00","DESCRIPTION":"Morada principal"},{"ID":13,"BPID":1,"ADDRESS1":"Algarve em grande casas","ADDRESS2":"Junto ao mar","NUMBER":"No areal","LOCALE":"Algarve","POSTCODE":"2222-222","CITY":"Algarve","STATE":"","COUNTRY":"Portugal","ISMAINADDRESS":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00","DESCRIPTION":"Morada de Férias"}],"contacts":[{"ID":10,"BPID":1,"TYPE":1,"CONTACTNAME":"Vasco Mendes","CONTACTTITLE":"Sr,","CONTACT":"919999999","LANG":"PT","ISMAINCONTACTFORM":true,"ISMAINCONTACT":true,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"},{"ID":11,"BPID":1,"TYPE":3,"CONTACTNAME":"Vasco","CONTACTTITLE":"Sr","CONTACT":"vasco.mendes@rupolusiaves.pt","LANG":"PT","ISMAINCONTACTFORM":false,"ISMAINCONTACT":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"},{"ID":12,"BPID":1,"TYPE":2,"CONTACTNAME":"Responsável de departamento de compras","CONTACTTITLE":"","CONTACT":"+3519919191919","LANG":"PT","ISMAINCONTACTFORM":false,"ISMAINCONTACT":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"}]};
_.get(jsonEntity, 'LASTNAME');
jsonEntity.LASTNAME
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
Loadash | |
Native |
Test name | Executions per second |
---|---|
Loadash | 3181203.5 Ops/sec |
Native | 11083460.0 Ops/sec |
I'll do my best to explain the benchmark and its various aspects.
Benchmark Definition
The provided JSON represents a JavaScript microbenchmark named "LodashBigStructure". The benchmark consists of two individual test cases: "Loadash" and "Native".
Test Case 1: Loadash
The first test case measures how fast the Lodash library can be used to access the LASTNAME
property of an object. The benchmark definition is `_ = require('lodash'); var jsonEntity = {"ID":1,"MAINSOURCESYSTEM":null,"EXTERNALCODE":"VASCO1","NAME":"","FIRSTNAME":"Vasco","LASTNAME":"Mendes","SEARCHNAME1":"","SEARCHNAME2":"","CONTACTFORM":"Sr.","NIF":"211111111","COUNTRY":"Portugal","D":"","addresses":[{"ID":2,"BPID":1,"ADDRESS1":"Rua Morada 1 do Vasco","ADDRESS2":"Rua Morada 2 do Vasco","NUMBER":"nº 341","LOCALE":"Vale do Porto","POSTCODE":"2496-660","CITY":"Fátima","STATE":"Ourém-Santarém","COUNTRY":"Portugal","ISMAINADDRESS":true,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00","DESCRIPTION":"Morada principal"},{"ID":13,"BPID":1,"ADDRESS1":"Algarve em grande casas","ADDRESS2":"Junto ao mar","NUMBER":"No areal","LOCALE":"Algarve","POSTCODE":"2222-222","CITY":"Algarve","STATE":"","COUNTRY":"Portugal","ISMAINADDRESS":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00","DESCRIPTION":"Morada de Férias"}],"contacts":[{"ID":10,"BPID":1,"TYPE":1,"CONTACTNAME":"Vasco Mendes","CONTACTTITLE":"Sr,","CONTACT":"919999999","LANG":"PT","ISMAINCONTACTFORM":true,"ISMAINCONTACT":true,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"},{"ID":11,"BPID":1,"TYPE":3,"CONTACTNAME":"Vasco","CONTACTTITLE":"Sr","CONTACT":"vasco.mendes@rupolusiaves.pt","LANG":"PT","ISMAINCONTACTFORM":false,"ISMAINCONTACT":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"},{"ID":12,"BPID":1,"TYPE":2,"CONTACTNAME":"Responsável de departamento de compras","CONTACTTITLE":"","CONTACT":"+3519919191919","LANG":"PT","ISMAINCONTACTFORM":false,"ISMAINCONTACT":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"}]}; var result = _.get(jsonEntity, 'LASTNAME');",
"Test Name": "Loadash"
The benchmark measures the execution time of using the Lodash library's _.get()
method to access the LASTNAME
property.
Test Case 2: Native
The second test case measures how fast JavaScript can be used to access the LASTNAME
property directly, without relying on any external libraries. The benchmark definition is `var jsonEntity = {"ID":1,"MAINSOURCESYSTEM":null,"EXTERNALCODE":"VASCO1","NAME":"","FIRSTNAME":"Vasco","LASTNAME":"Mendes","SEARCHNAME1":"","SEARCHNAME2":"","CONTACTFORM":"Sr.","NIF":"211111111","COUNTRY":"Portugal","D":"","addresses":[{"ID":2,"BPID":1,"ADDRESS1":"Rua Morada 1 do Vasco","ADDRESS2":"Rua Morada 2 do Vasco","NUMBER":"nº 341","LOCALE":"Vale do Porto","POSTCODE":"2496-660","CITY":"Fátima","STATE":"Ourém-Santarém","COUNTRY":"Portugal","ISMAINADDRESS":true,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00","DESCRIPTION":"Morada principal"},{"ID":13,"BPID":1,"ADDRESS1":"Algarve em grande casas","ADDRESS2":"Junto ao mar","NUMBER":"No areal","LOCALE":"Algarve","POSTCODE":"2222-222","CITY":"Algarve","STATE":"","COUNTRY":"Portugal","ISMAINADDRESS":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00","DESCRIPTION":"Morada de Férias"}],"contacts":[{"ID":10,"BPID":1,"TYPE":1,"CONTACTNAME":"Vasco Mendes","CONTACTTITLE":"Sr,","CONTACT":"919999999","LANG":"PT","ISMAINCONTACTFORM":true,"ISMAINCONTACT":true,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"},{"ID":11,"BPID":1,"TYPE":3,"CONTACTNAME":"Vasco","CONTACTTITLE":"Sr","CONTACT":"vasco.mendes@rupolusiaves.pt","LANG":"PT","ISMAINCONTACTFORM":false,"ISMAINCONTACT":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"},{"ID":12,"BPID":1,"TYPE":2,"CONTACTNAME":"Responsável de departamento de compras","CONTACTTITLE":"","CONTACT":"+3519919191919","LANG":"PT","ISMAINCONTACTFORM":false,"ISMAINCONTACT":false,"ISACTIVE":true,"VALIDFROM":"1900-01-01T00:00:00","VALIDTO":"1900-01-01T00:00:00"}]}; var result = jsonEntity.LASTNAME;"
The benchmark measures the execution time of accessing the LASTNAME
property directly, without using any external libraries.
Comparison
The two test cases are designed to compare the performance of using an external library (Lodash) versus accessing properties directly in JavaScript. The results indicate that accessing properties directly is generally faster than using an external library.
Device Platform and Operating System
The benchmark data includes information about the device platform (Desktop) and operating system (Windows). This suggests that the benchmark was run on a Windows-based desktop machine, which may not be representative of other platforms or operating systems.
Overall, this benchmark provides insight into the performance characteristics of using Lodash versus accessing properties directly in JavaScript. It can help developers optimize their code for better performance.