Find leap year (v3)

Revision 3 of this benchmark created by Kristof Neirynck on


Description

Find fastest way to check whether a year is a leap year.

Preparation HTML

<script>
  function checkYears(fn) {
   var years = [1900, 1970, 1991, 1995, 2000, 2007, 2010],
       length = years.length,
       i = 0;
   for (; i < length; i++) {
    fn(years[i]);
   }
  }
  
  regex1 = /([48cg]|[^5af]0)$/;
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Modulo (truthy)
function isLeapYear(year) {
 return !(year % 4) && !! (year % 100) || !(year % 400);
}

checkYears(isLeapYear);
ready
Modulo (equals zero)
function isLeapYear(year) {
 return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}

checkYears(isLeapYear);
ready
Check for 29 February
function isLeapYear(year) {
 return new Date(year, 1, 29).getDate() == 29;
}

checkYears(isLeapYear);
ready
Base20 with regex
function isLeapYear(year) {
 return regex1.test(year.toString(20));
}

checkYears(isLeapYear);
ready
Odd bit manipulations
function isLeapYear(year) {
 return !(year & 3 || year & 15 && !(year % 25))
}

checkYears(isLeapYear);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Sander Aarts on
  • Revision 3: published by Kristof Neirynck on