[STL] Przekazanie wektora wskaźników do funkcji.
Ostatnio zmodyfikowano 2016-01-31 20:03
| hit Temat założony przez niniejszego użytkownika | » 2016-01-31 19:35:42 A co konkretnie? Tak jak napisałem wyżej, wszystko to wczytuję do stringów. Docelowo tych pól ma być jeszcze więcej i ma się tworzyć kilka takich zestawień dla innych danych. Większość tych stringów ma mniej niż 15 znaków. Jak zakomentowałem przypisywanie do zmiennej temp i w sumie puściłem pustą pętlę to i tak leci z prędkością ok. 5 tys/s czyli znacznie szybciej ale widzę, że tak szybko jak w C# to chyba nie będzie mogło się wykonywać? Napisz co konkretnie chcesz wiedzieć o tych danych. Teraz jest tak: void utworzZestawW( vector < Slownik > slownik, vector < Klasa > klasa, vector < ZestawW >& tab ){
 ZestawW temp;
 Slownik s;
 cout << "Trwa tworzenie zestawienia." << endl;
 vector < Slownik >::iterator itSlow;
 
 for( size_t i = 1; i < klasa.size(); i++ )
 {
 if( a > 0 )
 {
 temp.imie = klasa[ i ].imie;
 temp.nazwisko = klasa[ i ].nazwisko;
 temp.opis = klasa[ i ].opis;
 s.nazwisko = klasa[ i ].nazwisko;
 itSlow = lower_bound( slownik.begin(), slownik.end(), s, sortSlownik );
 tab.push_back( temp ); if( i % 5000 == 0 ) cout << i << endl;
 
 }
 a++;
 }
 cout << "Zestawienie utworzone." << endl;
 }
 
 | 
|  | 
| pekfos | » 2016-01-31 19:46:05 Nawet się nie kompiluje. W najlepszym przypadku: wszystko. Od tego zależy wybór odpowiednich rozwiązań. Jakie dane chcesz ze sobą łączyć, w jakich ilościach są każde z nich, itd. Pisałeś, że dla każdego rekordu jednego rodzaju istnieje jeden (dokładnie jeden?) drugiego rodzaju. Jeśli jest tak, możesz wszystko posortować wg tego samego kryterium i łączenie nie będzie wymagało żadnego szukania. | tak szybko jak w C# to chyba nie będzie mogło się wykonywać? | 
 A w C# robisz w ogóle to samo? Kod w C++ kompilujesz we właściwy sposób? | void utworzZestawW( vector < Slownik > slownik, vector < Klasa > klasa, vector < ZestawW >& tab )
 | 
 Referencje! | 
|  | 
| hit Temat założony przez niniejszego użytkownika | » 2016-01-31 19:55:22 A wybacz, zmieniałem tutaj ręcznie zanim tam wkleiłem: void utworzZestawW( vector < Slownik > slownik, vector < Klasa > klasa, vector < ZestawW >& tab ){
 ZestawW temp;
 Slownik s;
 cout << "Trwa tworzenie zestawienia." << endl;
 vector < Slownik >::iterator itSlow;
 
 for( size_t i = 1; i < klasa.size(); i++ )
 {
 temp.imie = klasa[ i ].imie;
 temp.nazwisko = klasa[ i ].nazwisko;
 temp.opis = klasa[ i ].opis;
 s.nazwisko = klasa[ i ].nazwisko;
 itSlow = lower_bound( slownik.begin(), slownik.end(), s, sortSlownik );
 tab.push_back( temp ); if( i % 5000 == 0 ) cout << i << endl;
 
 }
 cout << "Zestawienie utworzone." << endl;
 }
 
Co do C# no to tam kod wygląda inaczej, więc może nie ma co porównywać w ten sposób.  Jeśli chodzi o łączenie to w tym przypadku tak może będzie, ale mam też takie struktury jak magazyn i przy nich również słownik no i tam dla x magazynów rekord w słowniku może być ten sam (danych w magazynie jest załóżmy 200 tys. a w słowniku tylko tysiąc ). Kompiluję w trybie Debug, x86 Local Windows Debbuger (Visual Studio 2015). Dodałem referencje do pozostałych wektorów i jest już trochę lepiej - jakieś 5 tys. rekordów na sekundę z przypisywaniem do temp. | 
|  | 
| pekfos | » 2016-01-31 20:01:13 | Kompiluję w trybie Debug, x86 Local Windows Debbuger (Visual Studio 2015). | 
 Wydajność porównuj w Release, a nie Debug. | 
|  | 
| hit Temat założony przez niniejszego użytkownika | » 2016-01-31 20:03:02 Bingo. Dzięki za pomoc :) | 
|  | 
| 1 2 3 4 « 5 » |