{"id":6816,"date":"2011-06-17T12:52:39","date_gmt":"2011-06-17T10:52:39","guid":{"rendered":"https:\/\/www.petermeindertsma.nl\/blog\/?p=6816"},"modified":"2011-06-17T12:52:39","modified_gmt":"2011-06-17T10:52:39","slug":"javascript-snelheidstest-internet-explorer-is-opvallend-langzaam","status":"publish","type":"post","link":"https:\/\/www.petermeindertsma.nl\/blog\/javascript-snelheidstest-internet-explorer-is-opvallend-langzaam\/","title":{"rendered":"JavaScript snelheidstest: Internet Explorer is opvallend langzaam"},"content":{"rendered":"<p><img loading=\"lazy\" class=\"alignright size-full wp-image-6817\" title=\"javascript-snelheid-test\" src=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/javascript-snelheid-test.gif\" alt=\"\" width=\"150\" height=\"98\" \/>Tijdens het werken aan een timer functie voor een spelletje in JavaScript, viel het me op dat Internet Explorer opvallende afwijkende snelheden laat zien.<\/p>\n<p>Om dit verder te onderzoeken heb ik een aantal metingen verricht en de resultaten hiervan vind je in dit artikel.<br \/>\n<!--more--><\/p>\n<h3>Beschrijving experiment<\/h3>\n<p>Voor dit onderzoek maakte ik gebruik van een zelfgeschreven <a title=\"Test zelf maar! :)\" href=\"https:\/\/www.petermeindertsma.nl\/js-timer-test.htm\" target=\"_blank\">JavaScript Timer script<\/a>, wat gebruik maakt van de standaard <em>setTimeout<\/em> functie.<\/p>\n<p>Na het starten van dit script wordt elke 0,1 seconde een streepje op het scherm geplaatst. Dit script stopt na 200 streepjes en meet dan de eindtijd. In theorie zou dit script precies 20 seconden moeten duren.<\/p>\n<p>Om dit te toetsen heb ik zowel thuis als op mijn werkplek ongeveer 90 tests gedaan met de drie gangbare browsers voor Windows: Internet Explorer (7 en 8), Firefox (3.6 en 4.0) en Google Chrome (11.0).<\/p>\n<h3>De resultaten<\/h3>\n<h4>20 seconden<\/h4>\n<p>Voor het testen van een scriptduur van 20 seconden verrichte ik 9 metingen per browser. Elke browser zou er in theorie precies 20 seconden over moeten doen. In deze grafiek zie je per browser en meting de <strong>afwijking<\/strong> van die 20 seconden in milliseconden (verticale as):<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-6818\" title=\"afwijking-20sec\" src=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-20sec.gif\" alt=\"Browser snelheid test IE FF Chrome 20 seconden\" width=\"420\" height=\"270\" srcset=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-20sec.gif 420w, https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-20sec-300x192.gif 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/>In deze grafiek is te zien dat Internet Explorer (zowel 7 als 8 ) aanzienlijk meer tijd nodig heeft om het script te voltooien, en dat deze afwijking opvallend constant lijkt te zijn. Bij elke meting bleek IE precies 1765 of 1766 milliseconden meer tijd nodig te hebben. Firefox en Chrome lieten nauwelijks afwijkingen zien en kwamen, op een enkele uitschieter na, niet boven een afwijking van 30 milliseconden.<\/p>\n<h4>10 seconden<\/h4>\n<p>Bij het testen van dit script met een duur van 10 seconden (100 streepjes) zagen de afwijkingen van de 5 verrichte metingen er zo uit:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-6820\" title=\"afwijking-10sec\" src=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-10sec.gif\" alt=\"Javascript snelheid test browser 10 seconden\" width=\"420\" height=\"270\" srcset=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-10sec.gif 420w, https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-10sec-300x192.gif 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/>Ook bij deze metingen bleek Internet Explorer veruit de traagste van de drie browsers. En ook ditmaal was deze afwijking constant: 828 milliseconden.<\/p>\n<p>Daarnaast is het opvallend dat bij deze test FF en Chrome een negatieve afwijking lieten zien: Met andere woorden, ze deden er minder dan 10 seconden over om het script te voltooien. Deze afwijkingen bleef onder de 50 milliseconden.<\/p>\n<h4>40 seconden<\/h4>\n<p>Om te zien of Internet Explorer bij een grotere scriptduur nog trager werd, liet ik het script 40 seconden draaien (400 streepjes) en dat leidde tot deze afwijkingen:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-6821\" title=\"afwijking-40sec\" src=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-40sec.gif\" alt=\"Javascript browser snelheid test 40 seconden\" width=\"420\" height=\"270\" srcset=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-40sec.gif 420w, https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-40sec-300x192.gif 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/>Bij deze twee metingen per browser is Internet Explorer weer de traagste en constant (43640 i.p.v. de gewenste 40000 milliseconden). De afwijkingen in FF en Chrome bleef beperkt tot maximaal 150 milliseconden.<\/p>\n<h4>80 seconden<\/h4>\n<p>Bij een kleine test (2 keer per browser) voor een scriptduur van 80000 milliseconden had Internet Explorer 87391 nodig. Dat is een afwijking van meer dan 7 seconden(!). FF en Chrome liepen daarbij maximaal 0,5 seconde vertraging op.<\/p>\n<h3>Afwijkingen<\/h3>\n<p>Het samenvoegen van deze metingen levert dit plaatje op:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-6823\" title=\"afwijking\" src=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking.gif\" alt=\"Afwijkingen per browser voor 10, 20, 40 en 80 seconden test\" width=\"420\" height=\"253\" srcset=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking.gif 420w, https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-300x180.gif 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/>Alle browsers laten een lineair verband in afwijkingen zien: Hoe langer het script duurt, hoe meer de tijd afwijkt van de gewenste tijd. Daarbij is Internet Explorer veruit de traagste van de drie.<\/p>\n<p>Deze vertragingen zien er per seconde zo uit:<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter size-full wp-image-6824\" title=\"afwijking-per-sec\" src=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-per-sec.gif\" alt=\"Afwijking per seconde per browser - javascrip snelheid test\" width=\"420\" height=\"253\" srcset=\"https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-per-sec.gif 420w, https:\/\/www.petermeindertsma.nl\/blog\/wp-content\/uploads\/2011\/06\/afwijking-per-sec-300x180.gif 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/>Hieruit blijkt voor alle browsers dat de afwijking per seconde langzaam toeneemt bij een langere duur van het script, maar dat deze toename niet constant is. De groei in afwijking per seconde neemt af bij een langere duur van het script.<\/p>\n<h3>Conclusie<\/h3>\n<p>Uit dit onderzoek blijkt dat het gebruik van een timer m.b.v. <em>setTimeout<\/em> in JavaScript in alle browsers tot afwijkingen leidt. Internet Explorer is hierbij opvallend langzaam en heeft aanzienlijk meer tijd nodig voor het uitvoeren van het test script dan Firefox of Chrome, die vergelijkbare afwijkingen laten zien.<\/p>\n<p>Het gebruik van Internet Explorer in webapplicaties die gebruik maken van de <em>setTimeout<\/em> functie in JavaScript, zoals spelletjes, kan dus nadelig zijn, omdat deze browser trager is. Het ligt hierbij voor de hand om dan Firefox of Chrome te gebruiken.<\/p>\n<p>p.s. 1: In de toekomst kan dit onderzoek worden uitgebreid door ook Safari en Opera te onderzoeken, alsmede nieuwe browserversies (zoals IE 9).<\/p>\n<p>p.s. 2: Je kan dit <a title=\"Test zelf maar! :)\" href=\"https:\/\/www.petermeindertsma.nl\/js-timer-test.htm\" target=\"_blank\">JavaScript Timer script<\/a> ook op je eigen browser naar keuze testen (voor de duur van 20 sec).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tijdens het werken aan een timer functie voor een spelletje in JavaScript, viel het me op dat Internet Explorer opvallende afwijkende snelheden laat zien. Om dit verder te onderzoeken heb ik een aantal metingen verricht en de resultaten hiervan vind je in dit artikel.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[273],"tags":[270,268,1431,1436,135,269,1434,1435,1432,1433,854,1437],"_links":{"self":[{"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/posts\/6816"}],"collection":[{"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/comments?post=6816"}],"version-history":[{"count":15,"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/posts\/6816\/revisions"}],"predecessor-version":[{"id":6837,"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/posts\/6816\/revisions\/6837"}],"wp:attachment":[{"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/media?parent=6816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/categories?post=6816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.petermeindertsma.nl\/blog\/wp-json\/wp\/v2\/tags?post=6816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}