Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  Exceptionverwendung in größeren Projekten?  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Mis2com
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.03.2002
Beiträge: 2752
Beitrag Mis2com Mitglied 16:56:00 27.04.2003   Titel:              Zitieren

suizid...

äh, ich meine, dann nehm ich lieber net weil vc6.0

_________________
Erfolg = Motivation
nothrow
Unregistrierter




Beitrag nothrow Unregistrierter 17:01:00 27.04.2003   Titel:              Zitieren

quatsch. nimm exceptions
HumeSikkins
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.08.2000
Beiträge: 11139
Beitrag HumeSikkins Mitglied 17:07:00 27.04.2003   Titel:              Zitieren

Zitat:
äh, ich meine, dann nehm ich lieber net weil vc6.0

Falsche Schlussfolgerung. Ehrlich. Nimm eine Stoppuhr (einen Profiler) und miss es nach.

_________________
Remember Sturgeon's Law:
"Ninety percent of everything is crap."
and now go visit my Homepage ;-)
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25702
Beitrag volkard Moderator 17:11:00 27.04.2003   Titel:              Zitieren

Zitat:
Original erstellt von Mis2com:
äh, ich meine, dann nehm ich lieber net weil vc6.0

nachdem du gemessen hast bitte. alles andere wäre unfug.
und auch dann nur, wenn der unterschied drastisch ist, denn du wirst ja bald auf nen moderneren compiler umsteigen müssen, und spätestens da gibts kein problem.

nur mal angenommen, ein funktionsaufruf sei dreimal so lang. mit alten mitteln müßtest du auf jeden fall den aufruf in ein if stecken und oft sogar nen zusätzlichen parameter für den fehlercode reinmachen und dann willste schneller sein?

(ach, warum geb ich mis2com eigentlich tips? ich stelle es ein.)

_________________
ewr-dienstleister krankenversicherung
Mis2com
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.03.2002
Beiträge: 2752
Beitrag Mis2com Mitglied 17:39:00 27.04.2003   Titel:              Zitieren

ok, dann nehm ich exceptions

_________________
Erfolg = Motivation
Gerard
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.01.2002
Beiträge: 6118
Beitrag Gerard Mitglied 23:00:00 30.04.2003   Titel:              Zitieren

ich brauche mal ne idee wie ich das vernünftig vergleichen kann, das ist ein fight gegen den compilier und seine fähigkeiten sachen zu optimieren

was haltet ihr von diesen code für den anfang?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <vector>
#include <cstdlib>
#include <stop_watch.h>
using namespace std;
 
vector<int> v( 10 );
int index = 0;
 
 
void foo()
{
    if(!(index % 100))
        throw 1;
}
 
int foo_no_excp()
{
    if(!(index % 100))
        return 1;
 
    return 0;
}
 
 
int main()
{

 
    #define TEST_EXCP 1

 
    dim::time_measure tm( 100000 );
    do
    {

        #if TEST_EXCP

 
            try
            {
                foo();
            }
            catch(int)
            {
                v[index++ % 10]++;  
            }

        #else

 
            if(foo_no_excp())
                v[index++ % 10]++;

        #endif

 
    }while( tm );
 
    cout << tm << endl;;
 
    copy( v.begin(), v.end(), std::ostream_iterator<int>( cout, " * ") );
    cout << endl;
 
    return 0;
}


hier ist der inhalt von stop_watch.h, hoffe nicht das es die ergebnise verfälscht
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#ifndef STOPWATCH_H_DIM
#define STOPWATCH_H_DIM

#include <iostream>

#include <string>
#include <windows.h>
 
 
 
namespace dim
{
    typedef __int64 int64_t;
 
    class stop_watch
    {
    public:
        stop_watch()
        {
            reset();
        }
 
        void reset()
        {
            Sleep( 0 );
            starttime_ = ticks();
        }
 
        int64_t time() const
        {
            return ticks() - starttime_;
        }
       
 
    private:
 
 
        int64_t ticks() const
        {
           #pragma warning(disable:4035)
            __asm rdtsc;
           #pragma warning(default:4035)
        }
 
    private:
        int64_t starttime_;
    };
 
   
 
 
    class average
    {
    public:
        average(unsigned int n)
            :   sum_( 0 ),
                count_( 0 ),
                n_( n )
        {
        }
 
 
        bool need_more_values() const
        {
            return n_ != 0;
        }
 
        average & operator+= (stop_watch & sw)
        {
            sum_ += sw.time();
            ++count_;
            if(n_)
                --n_;
            return *this;
        }
 
        int64_t value() const
        {
            if(count_)
                return sum_ / count_;
            else
                return sum_;
        }
 
       
    private:
        int64_t             sum_;
        unsigned int        count_;
        unsigned int        n_;
    };
 
 
    class time_measure
    {
    public:
        time_measure(int n)
            :   av_( n )
        {
        }
 
        operator void *()
        {
            av_ += sw_;
            sw_.reset();
            if(av_.need_more_values() == 0)
                return NULL;
            else
                return (void*)1;
        }
 
        int64_t value() const
        {
            return av_.value();
        }
 
    private:
        average     av_;
        stop_watch  sw_;
    };
 
    std::string i64tostr(int64_t nr)
    {
        std::string res;
        do
        {
            res.insert( res.begin(), nr % 10 + '0' );
            nr /= 10;
        }while(nr);
 
        return res;
    }
 
           
 
    std::ostream & operator<< (std::ostream & os, const time_measure & sw)
    {
        return os << i64tostr( sw.value() );
    }
 
    std::ostream & operator<< (std::ostream & os, const stop_watch & sw)
    {
        return os << i64tostr( sw.time() );
    }
 
    std::ostream & operator<< (std::ostream & os, const average & av)
    {
        return os << i64tostr( av.value() );
    }
 
   
 
}//end of namespace dim

#endif  
Gerard
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.01.2002
Beiträge: 6118
Beitrag Gerard Mitglied 01:20:00 03.05.2003   Titel:              Zitieren

meine benchmarks stinken nach benchmark :(

hatt jemand code mit viel fehlerhändling usw. das sich für ein benchmark eignet (keine user abfragen usw.)

[ Dieser Beitrag wurde am 03.05.2003 um 01:28 Uhr von Dimah editiert. ]
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25702
Beitrag volkard Moderator 01:27:00 03.05.2003   Titel:              Zitieren

Zitat:
Original erstellt von Dimah:
meine benchmarks stinken nach benchmark :(

jo.
laß exceptions nicht fliegen, um ein dateiende anzuzeigen, oder nen stack, der leer war. eher, um ne nicht existierende datei oder speichermangel anzuzeigen. und siehe da, die fliegt so sauselten, daß du keine guten chancen hast, die auszumessen.
teste also mal lieber

int f(){int r=rand();if(r==0) throw 1;return r;}//nebst catch

gegen

int f(int* err){int r=rand();if(r==0) *err=1;return r;}//nebst if

_________________
ewr-dienstleister krankenversicherung
c++.de :: C++ (auch C++0x und C++11) ::  Exceptionverwendung in größeren Projekten?  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.