Bilder und AddBlocker

1. April 2014 von Mariya [permalink]

Vor ein Paar Tagen haben wir festgestellt, dass einige Bilder (überwiegend längliche Bilder 300x600px) in den unterschiedlichen Browsern (Firefox und Chrome) nicht angezeigt werden.

Bei der Suche nach der Problemursache wurde sichergestellt, dass die Bilder auf dem Server liegen, über die URL angesprochen und angezeigt werden können. Wird aber aber das Bild von einem HTML-Dokument aufgerufen, so wird es nicht mehr angezeigt. Die weiteren Nachforschungen haben ergeben, dass der Browser für das Bild keinen Request zu dem Server abschickt! Im Quellcode der Seite, findet man eine ‘komische’ CSS-Klasse, die dem IMG-Element hinzugefügt wird und somit das Bild unsichtbar macht (die URL für das Bild ist frei erfunden)

<img class="gvifgqmcanqkmsfynooh" src="https://www.test.com/images/Image-300x600.jpg">

Die Frage ist, woher kommt diese Klasse?
Nachdem alle Firefox AdOns ausgeschaltet wurden, wurde das Bild angezeigt. Das AddOn ‘Addblock Plus’ hat das Problem verursacht und die komische CSS-Classe hinzugegfügt die das Bild unsichtbar gemacht hat. Der AddBlocker blockt die Bilder, wenn der Bildname bestimmte Bilddimensionen beinhaltet. Vermutlich identifiziert der AddBlocker die längliche Bilder als mögliche Banner-Werbung und Blockt diese. So wurde z.B. das Bild mit dem Namen Image-300×600.jpg geblockt. Wenn man aber den Namen auf Image-300×300.jpg ändert oder auf Image-300x600Test.jpg wird das Bild durch den AddBlocker nicht mehr geblockt und im Browser angezeigt.

Fazit:
Keine Bilddimensionen im Bildnamen angeben, denn diese können von AddBlocker als Werbung identifizeirt und geblockt werden.

Kategorie: Allgemein, Softwareentwicklung | keine Kommentare »

Weniger CPU Leistung mit aktiviertem Hyper-Threading

19. Februar 2014 von Steffen Döring [permalink]

Im zuvorigen Blog wurde geklärt, inwieweit die Benutzung einer integrierten Grafikkarte die Leistung der CPU beeinflußt. Um ca. 7% verminderte sich die Leistung bei Nutzung aller Cores einer CPU im Gegensatz zum Einsatz einer diskreten Grafikkarte.
 

Bei diesen Tests fiel auf, dass ein weiterer Faktor die CPU Leistung beeinflusst. Mit aktiviertem Hyper-Threading verringerte sich ebenfalls die CPU Leistung bei Auslastung aller (echten) Cores der CPU.
 

Das Setup und das Testverfahren ist das Gleiche wie beim zuvorigen Test, nur dass das Hyper-Threading der Intel CPU im Bios deaktiviert wurde.
 

Für den Testlauf wurde die ATI Grafikkarte verwendet.
Hier nun beispielhaft die Ergebnisse der ersten Distanz von Super PI.

 ------ Started super_pi run
 Start of PI calculation up to 33554432 decimal digits
 End of initialization. Time=       6.860 Sec.
 I= 1 L=       0        Time=      21.320 Sec.
 I= 2 L=       0        Time=      24.220 Sec.
 I= 3 L=       1        Time=      24.220 Sec.
 I= 4 L=       2        Time=      24.280 Sec.
 I= 5 L=       5        Time=      24.240 Sec.
 I= 6 L=      10        Time=      24.180 Sec.
 I= 7 L=      21        Time=      24.290 Sec.
 I= 8 L=      43        Time=      24.280 Sec.
 I= 9 L=      87        Time=      24.210 Sec.
 I=10 L=     174        Time=      24.250 Sec.
 I=11 L=     349        Time=      24.260 Sec.
 I=12 L=     698        Time=      24.200 Sec.
 I=13 L=    1396        Time=      24.170 Sec.
 I=14 L=    2794        Time=      24.280 Sec.
 I=15 L=    5588        Time=      24.310 Sec.
 I=16 L=   11176        Time=      24.250 Sec.
 I=17 L=   22353        Time=      24.260 Sec.
 I=18 L=   44707        Time=      24.250 Sec.
 I=19 L=   89415        Time=      24.090 Sec.
 I=20 L=  178831        Time=      24.010 Sec.
 I=21 L=  357662        Time=      24.050 Sec.
 I=22 L=  715326        Time=      23.720 Sec.
 I=23 L= 1430652        Time=      22.920 Sec.
 I=24 L= 2861304        Time=      21.420 Sec.
 End of main loop
 End of calculation.    Time=     595.840 Sec.
 End of data output.    Time=       1.520 Sec.
 Total calculation(I/O) time=     597.360(     123.651) Sec.
 ------ Ended super_pi run

Die Instanzen liefen wie folgt:

  • 597 Sekunden
  • 596 Sekunden
  • 595 Sekunden
  • 597 Sekunden

Durchschnittlich lief Super PI 596.25 Sekunden.

 

Im Vergleich zum vorherigen Test ergibt sich damit eine Steigerung von etwa 7.5% von 644 Sekunden auf 596 Sekunden.

Der Wikipedia Artikel zum Thema Hyper-Threading liefert hierfür die Erklärung. Die Mehrheit der Programme “büßt [..] sogar geringfügig an Performance bei aktiviertem Hyper-Threading auf einem Vierkernprozessor ein, da sie dem Prozessor kaum mehr als vier Threads anbieten, gleichzeitig aber der Verwaltungsaufwand innerhalb des Prozessors aufgrund von Hyper-Threading steigt.”

Programme, welche mehr Threads liefern, als die CPU echte Cores bietet, profitieren von aktiviertem Hyper-Threading.
 

Mit Nutzung der iGPU verbesserten sich die Testwerte von 693 Sekunden auf 642 Sekunden – ebenfalls eine Steigerung um ca. 7.5%.
 

Tags: , , , ,
Kategorie: Allgemein | keine Kommentare »

Stärkere Einbußen der CPU Leistung bei Nutzung der integrierten Grafik unter Last

14. Februar 2014 von Steffen Döring [permalink]

Der letzte Artikel untersuchte die Einbußen der CPU Leistung, wenn die iGPU benutzt wird. Im Gegensatz zum Einsatz einer Grafikkarte ergab sich eine marginale Verschlechterung der CPU Leistung um ~2.5%, für den Fall, dass ein CPU Kern voll ausgelastet wird.
Dieser Artikel überprüft nun die Einbußen der Leistung, wenn alle (echten) Kerne unter Last stehen.
 

Das Setup ist das Gleiche wie beim letzten Test:

  • CPU: Intel Core i7-3770K, 4x 3.50GHz, Turbo: 3.90GHz (alle vier Kerne)
  • RAM: 32GB DDR3-1866
  • Grafik: Radeon HD 5450, 1GB DDR3
  • OS: Manjaro XFCE (Linux), 64 Bit, v0.8.8
  • Intel Grafik Treiber: xf86-video-intel, v2.21.15-1
  • Ati Grafik Treiber: Mesa drivers, v9.1.6-1

 

Als Benchmark soll wieder Super PI mit 25 Iterationen dienen. Um alle vier Kerne auszulasten, werden vier Instanzen in vier Terminals gleichzeitig gestartet. Zur Simulation von Grafik-Last wird im transparenten Hintergrund der Terminals ein Full-HD Video in einem Browser (Firefox 26) abgespielt. Die Video Datei liegt auf einer lokalen RAM-Disk, um unabhängig von IO Zugriffen zu sein.

 

Im ersten Testlauf wurde der PC ohne Grafikkarte gestartet. Die Ausgabe erfolgt also über die in der Intel CPU integrierte GPU. Für eine bessere Vergleichbarkeit der Ergebnisse, wurde der GPU 1GB RAM zugewiesen.
Hier beispielhaft die erste Instanz von Super PI.

 ------ Started super_pi run
 Start of PI calculation up to 33554432 decimal digits
 End of initialization. Time=       7.880 Sec.
 I= 1 L=       0        Time=      25.440 Sec.
 I= 2 L=       0        Time=      28.960 Sec.
 I= 3 L=       1        Time=      28.170 Sec.
 I= 4 L=       2        Time=      28.220 Sec.
 I= 5 L=       5        Time=      28.540 Sec.
 I= 6 L=      10        Time=      28.320 Sec.
 I= 7 L=      21        Time=      27.830 Sec.
 I= 8 L=      43        Time=      27.430 Sec.
 I= 9 L=      87        Time=      28.070 Sec.
 I=10 L=     174        Time=      28.490 Sec.
 I=11 L=     349        Time=      28.340 Sec.
 I=12 L=     698        Time=      28.330 Sec.
 I=13 L=    1396        Time=      28.900 Sec.
 I=14 L=    2794        Time=      28.560 Sec.
 I=15 L=    5588        Time=      28.250 Sec.
 I=16 L=   11176        Time=      28.400 Sec.
 I=17 L=   22353        Time=      28.690 Sec.
 I=18 L=   44707        Time=      28.650 Sec.
 I=19 L=   89415        Time=      28.320 Sec.
 I=20 L=  178831        Time=      28.340 Sec.
 I=21 L=  357662        Time=      28.060 Sec.
 I=22 L=  715326        Time=      28.540 Sec.
 I=23 L= 1430652        Time=      27.060 Sec.
 I=24 L= 2861304        Time=      24.920 Sec.
 End of main loop
 End of calculation.    Time=     697.220 Sec.
 End of data output.    Time=       1.580 Sec.
 Total calculation(I/O) time=     698.800(     152.379) Sec.
 ------ Ended super_pi run

Die Instanzen liefen wie folgt:

  1. 699 Sekunden
  2. 698 Sekunden
  3. 697 Sekunden
  4. 677 Sekunden


Durchschnittlich lief Super PI 692.75 Sekunden.
 

Der zweite Testlauf erfolgte mit verbauter Radeon HD 5450 mit ebenfalls 1GB Speicher.
Hier beispielhaft die Ergebnisse der ersten Instanz von Super PI.

 ------ Started super_pi run
 Start of PI calculation up to 33554432 decimal digits
 End of initialization. Time=       7.810 Sec.
 I= 1 L=       0        Time=      23.080 Sec.
 I= 2 L=       0        Time=      26.490 Sec.
 I= 3 L=       1        Time=      26.140 Sec.
 I= 4 L=       2        Time=      26.170 Sec.
 I= 5 L=       5        Time=      26.170 Sec.
 I= 6 L=      10        Time=      26.200 Sec.
 I= 7 L=      21        Time=      26.240 Sec.
 I= 8 L=      43        Time=      25.880 Sec.
 I= 9 L=      87        Time=      26.220 Sec.
 I=10 L=     174        Time=      25.980 Sec.
 I=11 L=     349        Time=      26.270 Sec.
 I=12 L=     698        Time=      26.490 Sec.
 I=13 L=    1396        Time=      26.490 Sec.
 I=14 L=    2794        Time=      26.280 Sec.
 I=15 L=    5588        Time=      26.070 Sec.
 I=16 L=   11176        Time=      26.090 Sec.
 I=17 L=   22353        Time=      26.280 Sec.
 I=18 L=   44707        Time=      26.460 Sec.
 I=19 L=   89415        Time=      26.740 Sec.
 I=20 L=  178831        Time=      26.230 Sec.
 I=21 L=  357662        Time=      26.450 Sec.
 I=22 L=  715326        Time=      26.120 Sec.
 I=23 L= 1430652        Time=      25.210 Sec.
 I=24 L= 2861304        Time=      23.620 Sec.
 End of main loop
 End of calculation.    Time=     647.330 Sec.
 End of data output.    Time=       1.510 Sec.
 Total calculation(I/O) time=     648.840(     136.361) Sec.
 ------ Ended super_pi run

Die Instanzen liefen wie folgt:

  1. 649 Sekunden
  2. 646 Sekunden
  3. 642 Sekunden
  4. 640 Sekunden


Durchschnittlich lief Super PI 644.25 Sekunden.
 

Bei dem Test mit einem einzelnem, ausgelastetem CPU Kern war bereits eine leichte Tendenz zu erkennen. Um circa 2.5% verbesserte sich die Leistung der CPU. Mit vier ausgelasteten Kernen verdeutlicht sich dieses Bild. Von durchschnittlich 692.75 Sekunden mit der iGPU verbesserte sich Super PI auf 644.25 Sekunden. Das entspricht einer Verbesserung von ~7%.
 

Tags: , , , , , , , ,
Kategorie: Allgemein | keine Kommentare »

AngularJS: $resource für Collection-Queries mit Metadaten nutzen

12. Februar 2014 von Martin Kartawijaya [permalink]

Wenn man die $resource-Factory benutzt um RESTful APIs anzusprechen kann es nötig sein Ressourcen zu konsumieren, welche die Daten nicht in der Form bereitstellen, wie es von $resource erwartet wird. Dies ist oft der Fall wenn man es mit server-seitiger Paginierung zu tun hat, bei der das Resultat für gewöhnlich nicht einfach ein Array von Instanzen ist, sondern ein Objekt welches neben den eigentlichen Instanzen noch Metadaten wie bspw. Gesamtanzahl oder Anzahl an Instanzen pro Seite enthält.

weiter lesen »

Tags: , ,
Kategorie: Softwareentwicklung | keine Kommentare »

Marginale Einbußen der CPU Leistung bei Nutzung der integrierten Grafik

7. Februar 2014 von Steffen Döring [permalink]

Die iGPU ist heutzutage fester Bestandteil der meisten CPUs und für die meisten Anwendungsfälle ist diese vollkommen ausreichend. Auch auf Arbeit, den Office Rechnern, ist selten eine eigentständige Grafikkarte notwendig.
 

Doch wieviel Leistung geht dem Prozessor verloren, wenn die Ausgabe für den Monitor ebenfalls durch die CPU – sprich der integrierten Grafik – berechnet wird.
Darüber soll ein schneller Test Aufschluss geben.
 

Folgendes Testsetup findet Verwendung:

  • CPU: Intel Core i7-3770K, 4x 3.50GHz, Turbo: 3.90GHz
  • RAM: 32GB DDR3-1866
  • Grafik: Radeon HD 5450, 1GB DDR3
  • OS: Manjaro XFCE (Linux), 64 Bit, v0.8.8
  • Intel Grafik Treiber: xf86-video-intel, v2.21.15-1
  • Ati Grafik Treiber: Mesa drivers, v9.1.6-1

 

Als Benchmark soll Super PI mit 25 Iterationen dienen. Zur Simulation von Grafik-Last wird ein Full-HD Video in einem Browser abgespielt. Die Video Datei liegt auf einer lokalen RAM-Disk, um unabhängig von IO Zugriffen zu sein.
 

Im ersten Testlauf wurde der PC ohne Grafikkarte gestartet. Die Ausgabe erfolgt also über die in der Intel CPU integrierte GPU. Für eine bessere Vergleichbarkeit der Ergebnisse, wurde der GPU 1GB RAM zugewiesen.

 ------ Started super_pi run
 Start of PI calculation up to 33554432 decimal digits
 End of initialization. Time=       6.670 Sec.
 I= 1 L=       0        Time=      19.530 Sec.
 I= 2 L=       0        Time=      22.280 Sec.
 I= 3 L=       1        Time=      22.380 Sec.
 I= 4 L=       2        Time=      22.280 Sec.
 I= 5 L=       5        Time=      22.300 Sec.
 I= 6 L=      10        Time=      22.220 Sec.
 I= 7 L=      21        Time=      22.360 Sec.
 I= 8 L=      43        Time=      22.490 Sec.
 I= 9 L=      87        Time=      22.410 Sec.
 I=10 L=     174        Time=      22.420 Sec.
 I=11 L=     349        Time=      22.480 Sec.
 I=12 L=     698        Time=      22.500 Sec.
 I=13 L=    1396        Time=      22.560 Sec.
 I=14 L=    2794        Time=      22.570 Sec.
 I=15 L=    5588        Time=      22.560 Sec.
 I=16 L=   11176        Time=      22.580 Sec.
 I=17 L=   22353        Time=      22.490 Sec.
 I=18 L=   44707        Time=      22.590 Sec.
 I=19 L=   89415        Time=      22.480 Sec.
 I=20 L=  178831        Time=      22.410 Sec.
 I=21 L=  357662        Time=      22.240 Sec.
 I=22 L=  715326        Time=      21.970 Sec.
 I=23 L= 1430652        Time=      21.360 Sec.
 I=24 L= 2861304        Time=      19.900 Sec.
 End of main loop
 End of calculation.    Time=     552.550 Sec.
 End of data output.    Time=       1.520 Sec.
 Total calculation(I/O) time=     554.070(     111.931) Sec.
 ------ Ended super_pi run

554 Sekunden.
 

Im zweiten Testlauf wurde die Radeon HD 5450 mit ebenfalls 1GB Speicher eingebaut.

 ------ Started super_pi run
 Start of PI calculation up to 33554432 decimal digits
 End of initialization. Time=       6.470 Sec.
 I= 1 L=       0        Time=      19.180 Sec.
 I= 2 L=       0        Time=      21.940 Sec.
 I= 3 L=       1        Time=      21.900 Sec.
 I= 4 L=       2        Time=      21.900 Sec.
 I= 5 L=       5        Time=      21.910 Sec.
 I= 6 L=      10        Time=      21.920 Sec.
 I= 7 L=      21        Time=      21.890 Sec.
 I= 8 L=      43        Time=      21.940 Sec.
 I= 9 L=      87        Time=      21.970 Sec.
 I=10 L=     174        Time=      21.920 Sec.
 I=11 L=     349        Time=      21.920 Sec.
 I=12 L=     698        Time=      21.960 Sec.
 I=13 L=    1396        Time=      21.960 Sec.
 I=14 L=    2794        Time=      21.900 Sec.
 I=15 L=    5588        Time=      21.940 Sec.
 I=16 L=   11176        Time=      21.950 Sec.
 I=17 L=   22353        Time=      21.960 Sec.
 I=18 L=   44707        Time=      21.930 Sec.
 I=19 L=   89415        Time=      21.910 Sec.
 I=20 L=  178831        Time=      21.810 Sec.
 I=21 L=  357662        Time=      21.660 Sec.
 I=22 L=  715326        Time=      21.420 Sec.
 I=23 L= 1430652        Time=      20.740 Sec.
 I=24 L= 2861304        Time=      19.310 Sec.
 End of main loop
 End of calculation.    Time=     539.450 Sec.
 End of data output.    Time=       1.520 Sec.
 Total calculation(I/O) time=     540.970(     107.071) Sec.
 ------ Ended super_pi run

540 Sekunden.
 

Dieser kurze Test erhebt nicht den Anspruch auf Vollständigkeit. Trotzdem ist eine Tendenz zu erkennen.
Durch Nutzung einer diskreten Grafik ergibt sich ein kleiner Geschwindigkeitsvorteil – hier in diesem Test von etwa 2.5%. Der Wert mag niedrig erscheinen, doch unter Beachtung des Benchmarks, ergibt sich ein etwas anderes Bild. Super PI arbeitet singlethreaded. Während der Ausführung waren 3 Kerne der CPU im idle. Volle 3x 3.5GHz lagen brach und trotzdem dauerte der Test mit der iGPU länger.
 

Nichtsdestotrotz wird man in normalen Office Anwendungen keinen Unterschied merken. Erst bei langen rechenintensiven Anwendungen bringt eine eigenständige Grafikkarte Vorteile.
 

Tags: , , , , , , ,
Kategorie: Allgemein | keine Kommentare »

« ältere Einträge
neuere Einträge »