jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
ngetage3 = (function() {
function formatstr(a, b, c) {
b > 0 && a.push(b + c + (b > 1 ? "s" : "")) }
function formatdate(years, months, days) {
a = []
formatstr(a, years , " year" );
formatstr(a, months, " month");
formatstr(a, days , " day" );
a.length > 1 && (a[a.length - 1] = "and " + a[a.length - 1]);
return(!a.length ? "0 days" : "" ) +
a.join(a.length > 2 ? ", " : " ") + " old."
}
return function(a) {
a = new Date(Date.parse(a.replace(/-/g, "/")));
var b = new Date,
years = b.getYear () - a.getYear (),
months = b.getMonth() - a.getMonth(),
days = b.getDate () - a.getDate ();
if (b <= a) return "Invalid DOB."
months < 0 && (years --, months + 12);
days < 0 && (months--, days += 31);
months < 0 && (years --, months = 11);
return formatdate(years, months, days);
}
})()
ngetage2 = (function() {
function formatstr(a, b, c) {
b > 0 && a.push(b + c + (b > 1 ? "s" : "")) }
return function(a) {
a = new Date(Date.parse(a.replace(/-/g, "/")));
var b = new Date,
years = b.getYear () - a.getYear (),
months = b.getMonth() - a.getMonth(),
days = b.getDate () - a.getDate ();
if (b <= a) return "Invalid DOB."
months < 0 && (years --, months + 12);
days < 0 && (months--, days += 31);
months < 0 && (years --, months = 11);
a = []
formatstr(a, years , " year" );
formatstr(a, months, " month");
formatstr(a, days , " day" );
a.length > 1 && (a[a.length - 1] = "and " + a[a.length - 1]);
return(!a.length ? "0 days" : "" ) +
a.join(a.length > 2 ? ", " : " ") + " old."
}
})()
function ngetage(a) {
a = new Date(Date.parse(a.replace(/-/g, "/")));
var b = new Date,
years = b.getYear() - a.getYear(),
months = b.getMonth() - a.getMonth(),
days = b.getDate() - a.getDate();
if (b <= a) return "Invalid DOB."
months < 0 && (years--, months + 12);
days < 0 && (months--, days += 31);
months < 0 && (years--, months = 11);
a = [], b = function(b, c) {
b > 0 && a.push(b + c + (b > 1 ? "s" : ""))
}
b(years, " year");
b(months, " month");
b(days, " day");
a.length > 1 && (a[a.length - 1] = "and " + a[a.length - 1]);
return (!a.length ? "0 days" : "") + a.join(a.length > 2 ? ", " : " ") + " old."
}
function ogetage(dateString) {
var now = new Date();
var today = new Date(now.getYear(), now.getMonth(), now.getDate());
var yearNow = now.getYear();
var monthNow = now.getMonth();
var dateNow = now.getDate();
var dob = new Date(dateString.substring(0, 4), dateString.substring(5, 7) - 1, dateString.substring(8, 11));
var yearDob = dob.getYear();
var monthDob = dob.getMonth();
var dateDob = dob.getDate();
var age = {};
var ageString = "";
var yearString = "";
var monthString = "";
var dayString = "";
yearAge = yearNow - yearDob;
if (monthNow >= monthDob) var monthAge = monthNow - monthDob;
else {
yearAge--;
var monthAge = 12 + monthNow - monthDob;
}
if (dateNow >= dateDob) var dateAge = dateNow - dateDob;
else {
monthAge--;
var dateAge = 31 + dateNow - dateDob;
if (monthAge < 0) {
monthAge = 11;
yearAge--;
}
}
age = {
years: yearAge,
months: monthAge,
days: dateAge
};
if (age.years > 1) yearString = " years";
else yearString = " year";
if (age.months > 1) monthString = " months";
else monthString = " month";
if (age.days > 1) dayString = " days";
else dayString = " day";
if ((age.years > 0) && (age.months > 0) && (age.days > 0)) ageString = age.years + yearString + ", " + age.months + monthString + ", and " + age.days + dayString + " old.";
else if ((age.years == 0) && (age.months == 0) && (age.days > 0)) ageString = "Only " + age.days + dayString + " old!";
else if ((age.years > 0) && (age.months == 0) && (age.days == 0)) ageString = age.years + yearString + " old. Happy Birthday!!";
else if ((age.years > 0) && (age.months > 0) && (age.days == 0)) ageString = age.years + yearString + " and " + age.months + monthString + " old.";
else if ((age.years == 0) && (age.months > 0) && (age.days > 0)) ageString = age.months + monthString + " and " + age.days + dayString + " old.";
else if ((age.years > 0) && (age.months == 0) && (age.days > 0)) ageString = age.years + yearString + " and " + age.days + dayString + " old.";
else if ((age.years == 0) && (age.months > 0) && (age.days == 0)) ageString = age.months + monthString + " old.";
else ageString = "Oops! Could not calculate age!";
return ageString;
}
Ready to run.
Test | Ops/sec | |
---|---|---|
Old age calculator |
| ready |
New age calculator |
| ready |
New age calculator 2 |
| ready |
New age calculator 3 |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.