Ogromny problem w dzisiejszych czasach, gdzie 8GB RAMu to standard.
Wersja do druku
taa, developetrzy mają w dupie optymalizacje, a potem robią gry wymagające 16 gb ramu i dwóch kart graficznych z najwyższej półki i chłodzenia ciekłym azotem xD
Odnośnie optymalizacji kodu, ostatnio czytając ksiazke A. Williams'a (C++ Concurrency in Action, polecam) podał on fajny przykład odnosnie aplikacji single i multithreaded. Kiedyś kiedy wszyskie (większość domowych komputerów) miała 1 rdzeń, programisci pisali aplikacje na 1 rdzen - i w miare czasu, jak producenci procesorów wprowadzali lepsze procesory, ich aplikacje samoczynnie stawały się szybsze. Sytuacja się zmieniła, gdy producenci procesorów zaczli wprowadzać procesory multirdzeniowe na dekstopowe PC - wtedy programisci musieli zmienić swoje aplikacji (w większości case je przepisać), żeby supportować tą większą moc obliczeniową. Oczywiście część programistów pojechała po bandzie, i przesiadła się na języki/technologie które robią to ^ za nich.
Z drugiej strony, stoi PM/PO ktory średnio dba o to czy Twoj kod jest schludny/szybki/whatever, dla niego ważniejsze są zrobione ficzerki ze sprinta - implikuje to też presję na programiscie.
Z trzeciej strony, w myśl pojecia "Profesjonalista" jakim posluguje sie wujek Bob - programista ma uświadamiać swojego pracodawcę, że są rzeczy których nie można przyspieszyć kosztem jakości. Bo z każdą taką presją problemy się piętrzą, a ostatecznie to jest wina programistów że program działa gorzej niż mógłby. Ale standardowo wszystko kończy się na "To zależy..." :D A naprawianie "po" jest ZAWSZE drozsze niz "teraz".
Przy okazji rozmow o optymalizacji warto wspomniec o YAGNI
Cytuj:
Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%
raczej dedykowane własnemu proto (gdy konkurencja z wczytanymi libkami do 5, w tym proto danego komunikatora, potrzebuje znacznie mniej)
gg kiedys się spasło jak świnia, obecnie nie jest już tak źle (heheheheheh), ale praktycznie cała konkurencja potrzebuje w okolicy 10-25% mimo obsługi wielu proto i masy ciekawych rozszerzeń
Programuje ktoś z Was mikrokontrolery? W czystym C dla AVR albo np jakies Arduino :)
Mam pytanie, otóż uczę się C++ i jak do tej pory solidnie przerobiłem kurs na YT Mirosława Zelenta, rozwiązałem duuużo zadań na PL SPOJU. Teraz uczę sięSDLSTL, ale nasuwa mi się pytanie, co robić dalej? Czego polecacie się uczyć w następnej kolejności?
@Pytoo ;
Miło że ktoś też tutaj sie interesuję Arduino może byc zrobić oddzielny temat jesli ktoś sie jeszcze zajmuje mozna by sie dzielic wiedzą i swoimi projektami
VS 2012 Pro, solucja z 9 projektami:
https://i.imgur.com/e5p9xyF.png
To chyba nie duzo, hm?Kod:Arek@SZULAK-PC /c/devel
$ ls -lR | grep ".cpp$" | wc -l
1011
jak w c++ zrobić, żeby deklaracje metod klasy szablonowej były w headerze, a definicje w pliku .cpp?
gdy klasa jest szablonem to visual podpowiada, by definicję funkcji również w pliku nagłówkowym umieścić - tak się robi?
Ok to jak sie zluzuje sytuacja posesyjna to sie wyskrobie jakiś temat żeby kogos zainteresować :)
raczej temat nastawiony na elektronikę i arduino niż AVR bo tym sie nie zajmowałem
Samo Arduino to owrapowanie AVRowskiego GCC, przykładowo w Arduino masz setup() i loop(), w AVR robisz funkcję main() i tam dajesz sobie co chcesz (Arduino narzuca tutaj wywołanie setup() przed while(true) w którym znajduje się wywołanie loop())
Podobnie wygląda zabawa z wyjściami.
jak najprościej zbudować bazę danych w której będzie się przechowywać konta, hasła i atrybuty kont? tak żeby była walidacja wejścia do zamkniętej części strony
w sensie, że mam stronę firmową dla klientów i chcę zrobić sekcje dla pracownika do której się mogą zalogować, zobaczyć jakieś info i ogarnąć plan tygodnia (o której kto ma jeździć do jakiego klienta)
Najprościej to jakiś CMS z funkcją rejestracji/logowania + podstrona widoczna tylko dla zalogowanych. Możesz też to napisać, w ror czy sf2 taka mała apka pewnie nie zajmie więcej niż jeden wieczór.
Właściwie chyba najszybciej i najłatwiej byłoby zrobić bazkę w Django/ror i podpiąć/wygenerować apkę z crudem (np admina z Django).
Co to jest za typ argumentu w tej funkcji, co można przesłać do tej funkcji i jakie to może mieć zastosowanie?Kod:class Klasa
{
public:
};
void swap(Klasa* &a, Klasa* &b)
{
Klasa* temp;
temp = a;
a = b;
b = temp;
}
Z tego co sie mi zdaje to referencja na klase "Klasa" ale dupy sobie nie dam urwac bo expertem z cpp nie jestem xd
A zastosowanie to juz zalezy w jakim sensie xd
Referencja na wskaźnik. Albo wskaźnik na referencje ( ͡° ͜ʖ ͡°)
class Klasa
{
public:
};
void swap(Klasa* &a, Klasa* &b)
{
Klasa* temp;
temp = a;
a = b;
b = temp;
}
void swap2(Klasa* a, Klasa* b)
{
Klasa temp;
temp =* a;
*a = *b;
*b = temp;
}
To różnicą między tymi dwoma funkcjami jest to że jeżeli bym w ciele pierwszej zmodyfikował a to zmodyfikował bym adres w zmiennej wsk.
A gdybym zmodyfikował zmienną a w ciele funkcji 2 to adres się nie zmieni. Mam rację?
Czy widzicie jeszcze jakieś różnice między tymi dwoma funkcjami ?
1.I mam jeszcze pytanie czy jeżeli mam niewielki program to i tak go powinienem rozbijać na pliki nagłówkowe .h i implementacje .cpp czy może mogę go mieć w jednym pliku cpp?
2.Czy jeśli będzie to w 1 pliku to bedzie to gorzej postrzegane?
3.A jeśli już rozbijać na osobne pliki to czy każda klasa ma być w osobnym czy jeżeli są dwie małe klasy to mogą być we wspólnych plikach .h i .cpp?
4. A i co z normalnymi funkcjami ktore nie sa metodami klasy, tworzyć dla nich osobny plik cpp czy może w mainie je trzymać.
5. I gdzie inicjować statyczne zmienne klasy. W pliku z implementacją danej klasy?
Z góry dzięki za pomoc :)
@up
Odpowiem jak mnie uczono:
1. Zależy od zdefiniowania słowa niewielki, ale poleca się rozbijanie na oddzielne pliki, gdyż zwiększa to czytelność programu i w pewien sposób go standaryzuje.
2. Gorzej postrzegane przez kogo? Jeżeli będą to banalne rzeczy to raczej nie, ale patrz punkt 1.
3. Ja zawsze robiłem każdą klasę w oddzielnym pliku. Raz zdarzyło mi się wpisać trzy klasy w jednym, ale dziedzicząc z pierwszej, druga i trzecia różniła się jednym polem.
4. Obsługujące maina trzymałem w pliku main.
Hej, mam duży obiekt klasy która jest prymitywną bazą danych w c++. Obiekt ten posiada vector w którym są obiekty struktury użytkownicy. Każdy użytkownik ma imie, nazwisko, rok urodzenia itp.
Chcę teraz zapisać cały obiekt bazy danych do pliku binarnego i potem móc go wczytać. Ale jest problem bo jest tam dynamiczny wektor a w nim uzytkownicy którzy mają pola typu string. Żeby to zrobić tak po prostu to bym musiał zastąpić wszystko jakimiś statycznymi tablicami aby rozmiar był stały. W jaki sposób więc się zapisuje takie bardziej złożone klasy do pliku binarnego? Ma ktoś jakieś dobre przykłady?
Jak guglowałem to mi mignęło gdzieś pojęcie serializacji, jakieś dobre materiały ktoś o tym ma? A najlepiej proste przykłady
http://pl.wikipedia.org/wiki/Serializacja
to nie wystarczy?
To było w tym linku o serializacji w c++:
Cytuj:
Serializacja w języku C++[edytuj | edytuj kod]
Język C++ nie posiada wbudowanego wsparcia dla serializacji. Istnieją jednak przeznaczone do tego biblioteki, np. S11n
edit, dobra znalazlem cos o serializacji w bibliotece boost, czy to będzie wystarczające do moich potrzeb?
odnośnie tej bazy i strony którą buduję - jaka jest sytuacja z korzystaniem z google images? jeżeli walnąłbym jakieś zdjęcie z neta i je rozmył, to byłyby bagiety gdybym je użył jako tło mojej strony? @Haan ;
Lepsza java, która działa wszędzie, niż.net który miał być alternatywą, a na kazdej platformie działa inaczej jeśli w ogóle xD
Dobra, zrobiłem to za pomocą boost::serialization i jeśli nie brać pod uwagę błędów związanych z budowaniem/linkowaniem boosta to okazało się to arcybanalne i działa bardzo dobrze, wszystkie klasy, wektory, dynamiczne tablice, stringi itp bez problemu tym zapisałem do pliku i wczytałem.
czy to zadanie jest trudne (jeśli nigdy nic nie robiłem w c#)?Cytuj:
Napisz klasę, w języku C# obsługującą rzadką tablicę generyczną ((np. o rozmiarze 2 000 000 000)) wiedzac jednak, że liczba faktycznie przechowywanych elementów nie przekracza 1000!
Ma ktoś jakiś pomysł?Cytuj:
Napisz klasę, w języku C# obsługującą rzadką tablicę generyczną ((np. o rozmiarze 2 000 000 000)) wiedzac jednak, że liczba faktycznie przechowywanych elementów nie przekracza 1000!
Czy takie moje rozwiązanie jest ok czy może jakoś inaczej to zrobić(bo to mi się trochę za proste wydaje): przeciązyć dla klasy operator [] aby użytkownik dodawał obiekt tak jak do normalnej tablicy jednak będzie dodawał ją po prostu do vektora obiektow za pomocą pushback zapisując od razu też jego 'numer indeksu'. Przy odczycie danych w przypadku podania indeksu obiektu który jest w wektorze bedzie mozliwy dostep do tego obiektu a w przypadku gdy nie znajdzie się taki indeks zwrócony zostanie NULL.
Czy takie rozwiązanie jest prawidłowe czy nad czymś innym powinienem myśleć?
google przyjecielem kazdego programisty
http://forum.4programmers.net/C_i_.N..._jak_to_zrobic