(Ergänzung)
bearbeitet von ursus contionabundoTatsächlich!
Da hab ich wohl gesehen, was ich schreiben wollte - nicht was ich geschrieben habe. Die Optimierungen des menschlichen Hirns sind nicht unter allen Umständen optimal...
Hier mal eine Fassung ohne wahlfreien Zugriff.
~~~js
var s = String('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu');
var o = new String(s);
var tStart;
var tEnd;
console.log ('String: length ist ' + s.length );
tStart = new Date().getTime();
var l = s.length;
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = s.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit String: ' + String( tEnd-tStart ) + ' Millsekunden.');
console.log ('Objekt: length ist ' + o.length );
tStart = new Date().getTime();
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = o.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit Objekt: ' + String( tEnd-tStart ) + ' Millsekunden.');
~~~
Ergebnis:
~~~
String: length ist 996
Mit String: 102 Millsekunden.
Objekt: length ist 996
Mit Objekt: 347 Millsekunden.
~~~
Du hast Recht: **In diesem Test** sieht das Objekt "alt" aus.
Aber eigentlich ist das auch erklärbar: Wenn der Interpreter selbst die primitiven Daten in ein ihm gut bekanntes Objekt pokt, dann braucht er hinterher nicht untersuchen ob das Objekt diese oder jene Eigenschaft und diese oder jene Methode hat. Das spart ziemlich viele "Wenn-Dann-Sonst-" oder "try-catch-Konstrukte".
(Ergänzung)
bearbeitet von ursus contionabundoTatsächlich!
Da hab ich wohl gesehen, was ich schreiben wollte - nicht was ich geschrieben habe. Die Optimierungen des menschlichen Hirns sind nicht unter allen Umständen optimal...
Hier mal eine Fassung ohne wahlfreien Zugriff.
~~~js
var s = String('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu');
var o = new String(s);
var tStart;
var tEnd;
console.log ('String: length ist ' + s.length );
tStart = new Date().getTime();
var l = s.length;
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = s.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit String: ' + String( tEnd-tStart ) + ' Millsekunden.');
console.log ('Objekt: length ist ' + o.length );
tStart = new Date().getTime();
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = o.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit Objekt: ' + String( tEnd-tStart ) + ' Millsekunden.');
~~~
Ergebnis:
~~~
String: length ist 996
Mit String: 102 Millsekunden.
Objekt: length ist 996
Mit Objekt: 347 Millsekunden.
~~~
Du hast Recht: **In diesem Test** sieht das Objekt "alt" aus.
(Ergänzung)
bearbeitet von ursus contionabundoTatsächlich!
Hier mal eine Fassung ohne wahlfreien Zugriff.
~~~js
var s = String('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu');
var o = new String(s);
var tStart;
var tEnd;
console.log ('String: length ist ' + s.length );
tStart = new Date().getTime();
var l = s.length;
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = s.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit String: ' + String( tEnd-tStart ) + ' Millsekunden.');
console.log ('Objekt: length ist ' + o.length );
tStart = new Date().getTime();
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = o.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit Objekt: ' + String( tEnd-tStart ) + ' Millsekunden.');
~~~
Ergebnis:
~~~
String: length ist 996
Mit String: 102 Millsekunden.
Objekt: length ist 996
Mit Objekt: 347 Millsekunden.
~~~
Du hast Recht: **In diesem Test** sieht das Objekt "alt" aus.
(Ergänzung)
bearbeitet von ursus contionabundoTatsächlich!
Hier mal eine Fassung ohne wahlfreien Zugriff.
~~~js
var s = String('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu');
var o = new String(s);
var tStart;
var tEnd;
console.log ('String: length ist ' + s.length );
tStart = new Date().getTime();
var l = s.length;
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = s.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit String: ' + String( tEnd-tStart ) + ' Millsekunden.');
console.log ('Objekt: length ist ' + o.length );
tStart = new Date().getTime();
for ( let i=1; i < 1000; i++ ) {
for ( let p = 0; p < l; p++ ) {
let a = o.replace( 'foobar', ' ' );
}
}
tEnd = new Date().getTime();
console.log ( 'Mit Objekt: ' + String( tEnd-tStart ) + ' Millsekunden.');
~~~
Ergebnis:
~~~
String: length ist 996
Mit String: 102 Millsekunden.
Objekt: length ist 996
Mit Objekt: 347 Millsekunden.
~~~
Du hast Recht. In diesem Test sieht das Objekt "alt" aus.