Napisane przez: changs | Styczeń 24, 2007

Używanie rejestru procesora w C++.

Jeśli jesteś programistą C++ i nie znasz specyfikatora ‘register’ to myślę, że warto go poznać.

Dodany do definicji obiektu ( int ) prosi kompilator o to aby umieścił dany obiekt w rejestrze procesora a nie tak jak to się dzieje zwykle do komórki pamięci.

 

Co to nam daje?
Dostęp do danych zawartych w rejestrach jest prawie natychmiastowy, podczas gdy dostęp do komórek w pamięci RAM trwa stosunkowo długo.

 

Dlaczego napisałem, że dodając specyfikator register jedynie prosimy o to aby kompilator umieścił dany obiekt w rejestrze?
Ponieważ nie ma gwarancji, że kompilator umieści tam nasz obiekt lecz tylko spore prawdopodobieństwo.

Kiedy stosować?
Wtedy kiedy wiemy, że będziemy korzystać z danego obiektu bardzo wiele razy. Dzięki temu nasz program będzie się wykonywać trochę, a czasami dużo szybciej.

Kiedy nie stosować?
Gdy będziemy chcieli znać adres danego obiektu. Rejestr adresuje się inaczej niż komórki pamięci RAM. Gdy o tym zapomnimy kompilator zignoruje naszą prośbę o umieszczenie obiektu w rejestrze.

Pamiętaj także, żeby używać tego specyfikatora dosyć rozważnie. Pamięć procesora nie jest duża więc nie przesadzaj z umieszczaniem tam wszystkich obiektów.

 

Na zachętę zrobiłem mały test aby pokazać Wam, że czasami bardzo opłaca się pamiętać o rejestrze.

Program standardowy.

#include <iostream>
using namespace std;

int main()

{
int a = 1;
unsigned int b = 4294967295;

while (b)
{
a = 100 * a * a * b * b / b / a * 2 - 20 + b * b * a;

--b;
 }
return 0;
 }

Ten sam program ale wykorzystujący rejestr to przechowywania 2 obiektów.

#include <iostream> 
using namespace std;
int main()
 {
 register int a = 1;
 register unsigned int b = 4294967295;
while (b)
 {
 a = 100 * a * a * b * b / b / a * 2 - 20 + b * b * a;
-–b;
 }
 return 0;
}

W tym przypadku wzrost wydajności jest bardzo duży. Program pierwszy wykonuje się u mnie przez 229 sekund podczas gdy drugi program wykonuje się zaledwie 13 sekund!

Screen:

Free Image Hosting at www.ImageShack.us

Zobacz także: http://pl.wikipedia.org/wiki/Rejestr_procesora

Napisane przez: changs | Czerwiec 11, 2006

Mroczny pulpit.

Po moim wcześniejszym "sielankowym" pulpicie postanowiłem zmienić wygląd na trochę mroczniejszy.
Oto efekt:

Mroczny Openbox

Napisane przez: changs | Czerwiec 4, 2006

I znów o Wordzie 2007

Dalej testując sobie Worda 2007 beta wreszcie udało mi się go zawiesić (w końcu to beta) :-)
Po tym incydencie zaraz zgrabnie zaproponował mi odzyskania dokumentu który edytowałem. Ilustrują to 2 przedstawione niżej zrzuty ekranu:

Word i zwieszka

Odzyskiwania dokumentu

Wszystko ładnie przywrócił, szkoda tylko, że przywrócił to, co ja już wykasowałem o a nie przywrócił tego, co dodałem. Ale nie można mu mieć tego za złe. W końcu to jest beta a i tak dość stabilnie pracuje.

Napisane przez: changs | Czerwiec 4, 2006

Wsteczna kompatybilność Worda 2007 (beta)

Ostatnio intensywnie testuje Microsoft Office 2007 beta i niestety widzę, że jeszcze trochę pracy programistom zostało do ukończenia nowego biura 2007. Mimo to jestem pod całkiem sporym wrażeniem nowego zestawu oprogramowania. Bardzo spodobał mi się nowy interfejs, który znacznie zwiększa ergonomię pracy z oprogramowaniem. Problemem, który chcę poruszyć w tym poście jest wsteczna kompatybilność najnowszego Worda, która wszak jest jednym z ważniejszych dla użytkownika dobrodziejstwem. Czytaj dalej…

Napisane przez: changs | Czerwiec 3, 2006

Moje biurko

Przedstawie wam teraz zrzucik ekranu mojego pulpitu. To co widzisz na załączonym obrazku to Gentoo Linux oraz menadżer okien Openbox.

Mój pulpit

Jeśli jesteś zainteresowany lub po prostu z nudów chcesz pooglądać więcej moich zrzutów ekranu zajrzyj na stronę http://www.lynucs.org/?&changs , gdzie znajduję się galeria takich czy troszke innych obrazków mojego autorstwa.

Napisane przez: changs | Czerwiec 3, 2006

Witam

W końcu zdecydowałem się na wydalanie moich mysli w świat za pomocą bloga ;-)

Mam nadzieję, że czasami będziecie zerkać na nowe wpisy [:

Kategorie

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.