[C++] Performance Frage

12/12/2012 22:00 °Jin°#1
Einen schönen guten Abend,

Ich bin gerade dabei aus dem Buch C++ A - Z zu lernen , habe auch schon viel gelernt :), doch jetzt wollte ich gerne einen kleinen Multi-Bot schreiben für ein Spiel, dieser soll nicht viele aufgaben haben , doch jetzt habe ich gerne eine frage, also ich möchte meinen Multi-Bot per HWND Handeln dafür habe ich mir eine neuen HWND var erstellt
PHP Code:
HWND hHandel[1][MAX_BOTTING_CLIENTS]; 
wie man sieht habe ich ein array erstellt in diesen ich mehr Handels speichern kann MAX_BOTTING_CLIENTS ist wieviele Clients Maximal hinzugefügt werden kann
PHP Code:
#define MAX_BOTTING_CLIENTS 10 
Jetzt habe ich eine Funktion geschrieben mit der ich das HWND Array fülle
PHP Code:
int _Bot::SetClient_Hwnd(int Clients)
{
    if(
Clients MAX_BOTTING_CLIENTS)
    {
        
std::cout << "[ERROR] In dieser Version koennen sie nur " << MAX_BOTTING_CLIENTS << " Clients Handeln." << std::endl
        for(
int i 50i--)
        {
            
std::cout << "[INFO] _Bot Beendet sich in " << << " Sekunden." << std::endl;
            
Sleep(1000); 
        }
        exit(
0); 
        return 
FALSE;
    }else if(
Clients <= 0)
    {
        
std::cout << "[INFO] Sie muessen die Anzahl der Clients eingeben die Gehandelt werden sollen." << std::endl;
        for(
int i 50i--)
        {
            
std::cout << "[INFO] _Bot Beendet sich in " << << " Sekunden." << std::endl;
            
Sleep(1000); 
        }
        exit(
0); 
        return 
FALSE;
    }else
    {
        for(
int i 0Clientsi++)
        {
            
std::stringstream ss
            
ss << i
            
std::string MetinHwnd "Metin2"+ss.str(); 
            
_HWND[0][i] = FindWindow(0, (LPCWSTR)&MetinHwnd);  

            
HWND NormalHandel FindWindow(0L"Metin2");

            if(!
NormalHandel)
            {
                
std::cout << "[ERROR] Es wurde kein Metin2 Client gefunden." << std::endl
            }else
            {
                
SetWindowTextA(NormalHandel, (LPCSTR)&MetinHwnd);      
            }
            
std::cout << "[SUCCESS] Client mit dem Handel " << MetinHwnd << " ist gespeichert." << std::endl
             
        }
        return 
TRUE
    }

Jetzt wollte ich gerne fragen ob dies die richtige lösung ist oder ob es noch eine Performance sparene lösung gibt.


Lg.Jin
12/12/2012 23:14 .SkyneT.#2
Es heißt handLE nicht handel... (gewöhn dir das richtige an :P
sonst könnte es später mal zum Verhängnis werden)

Wenn ich das so überfliege würd ich jetzt nichts sehen
was die Performance merklich beeinflussen würde.
12/12/2012 23:46 °Jin°#3
Quote:
Es heißt handLE nicht handel... (gewöhn dir das richtige an :P
sonst könnte es später mal zum Verhängnis werden)

Wenn ich das so überfliege würd ich jetzt nichts sehen
was die Performance merklich beeinflussen würde.
Ja, du hast schon recht das nächste mal schreibe ich wie es halt geschrieben wird :), ich baue den Code gerade neu auf
werde in den Posten dennoch können verbesserungsvorschläge gepostet werden.

Ps : @.SkyneT. Aber ich denke bei kleinen Code (und wenn ich nicht im Team arbeite und nicht vor haben in zu Releasen),
sollte der Code doch nur für mich verständlich sein aber dennoch werde ich drauf achten :)
12/13/2012 01:22 Tyrar#4
etwas das mir immer sofort ins auge fällt: "i++"

i++ entspricht etwa (es sei denn es wird sehr gut optimiert)
Code:
mov eax, [i]
inc eax
mov [i], eax
++i entspricht etwa
Code:
inc [i]
der unterschied wäre aber so minimal, dass das doch relativ egal ist!
12/13/2012 01:30 Dr. Coxxy#5
Quote:
Originally Posted by HeavyHacker View Post
etwas das mir immer sofort ins auge fällt: "i++"

i++ entspricht etwa (es sei denn es wird sehr gut optimiert)
Code:
mov eax, [i]
inc eax
mov [i], eax
++i entspricht etwa
Code:
inc [i]
der unterschied wäre aber so minimal, dass das doch relativ egal ist!
schwachsinniger irrglaube, solche optimierungen überlässt man dem compiler.

EDIT:
Dass das hier funktionieren soll, wage ich zu bezweifeln:
Code:
            std::string MetinHwnd = "Metin2"+ss.str(); 
            _HWND[0][i] = FindWindow(0, (LPCWSTR)&MetinHwnd);
gleiche gilt für das hier:
Code:
                SetWindowTextA(NormalHandel, (LPCSTR)&MetinHwnd);
gibt nen paar mögliche minimaloptimierungen, die aber bei deiner anwendung kaum etwas ausmachen dürften - wieso fragst du überhaupt?

EDIT 2:
wieso ein 2dimensionales handle array, wenn die erste dimension konstant 1 ist?

EDIT3:
und allg. schlechter stil, unnötiger code und einige dinge, die einfach nur FALSCH sind, bitte lerne erst einigermaßen die sprache, mache die im buch beschriebenen aufgaben und wage dich dann an eigene projekte ran.
kannst dann gerne hier fragen wenn du eine konkrete frage hast.
12/13/2012 18:13 MoepMeep#6
Funktionen die nur einmal aufgerufen werden und dann sowieso keine merkbare Zeit beanspruchen müssen natürlich unbedingt optimiert werden. Der Code sieht scheiße aus, optimier lieber mal das.
12/14/2012 21:08 .Scy#7
ja mault ihn halt an anstatt konstruktive kritik zu geben. meine güte das was coxxy geschrieben hat ist ja noch ok aber das von die moepmeep ist einfach unnötig.