Announcement

Collapse
No announcement yet.

Compiler - Optimizer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Compiler - Optimizer

    Abendz zusammen !

    mal ne "doofe" frage:

    gibts für vb.net eigentlich auch (für c hab ich was gelesen)
    so ne ART optimicer für den code ? - welchen man erstmal testen will

    geil wäre ja folgende (leider noch nicht patentierte) Lösung:

    Code:
    Dim dieserTest  as classA as Optimiced = from X in Y .....
    Dim dieserTest  as classB as Optimiced = from X in Y .....
    ' oder halt ähnlich
    Dim dieserTest  as classA as Optimiced = from X in Y .....
    Dim dieserTest  as classA as Optimiced = from X in Z .....

    der compi sollte dann mal durchCompen und am ende
    - auf anfrage - anbiete ... was WIE "gut/schnell/langsam" war :-)

    mfg - r.b.
    Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
    Um heute vorm PC zu sitzen!

  • #2
    Du mischt mehrere Dinge

    -> Codeoptimierung auf Compilerebene
    -> Codeanalyse mittels eines Profilers
    Christian

    Comment


    • #3
      naja ... wenn man keine ahnung hat *g* ... weis man ja nicht ob man WAS mischt :-)

      ist ja beides sehr interessant ...
      nun gut ... des mit dem "patent" hat sich somit ja erledigt

      dann so:

      "früher" gings ja noch recht einfach
      1 ZIEL ~~~~~ 1... 2 ... oder 3 "Lösungen"
      Lösung 1 ~ 1 ... 2 ... oder 3 variationen
      "heute"
      1 ZIEL ~~~~~ 10 ... 20 ... oder 30 Lösungen
      Lösung 1 ~ 5... 10 ... oder 15 variationen

      da wird "hobbyProgrammer" langsam doof (wollte eigentlich sauer schreiben) aber doof triffts besser :-)

      hast du ne informative SEITE für beides ?
      -> Codeoptimierung auf Compilerebene
      -> Codeanalyse mittels eines Profilers

      danke ... für die nachsicht


      ps: hab zeit ... installiere gerade seit 1.5 stunden W7 HP auf nem nigelnagelNeuenPC
      vom feinsten dacht ich und der blueScreen zwinkert mich zum 5ten mal nun an :-)
      Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
      Um heute vorm PC zu sitzen!

      Comment


      • #4
        Die Zeiten der Optimierungen auf Compilerebene sind eigentlich vorbei, da moderne Compiler schon hochoptimierten Code erzeugen.

        Hinsichtlich eines Profilers würde ich mal google fragen...
        Christian

        Comment


        • #5
          jo ... nicht schlecht ... Visual Studio Profiler

          http://msdn.microsoft.com/de-de/maga...337887.aspx#S1

          zwischenfrage:

          wo find ich dieses "tool" unter vb.2008 express ? oder muss ich die VS anwerfen ?

          danke

          PS: steht leider nix über die "aktivierung" auf der seite
          Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
          Um heute vorm PC zu sitzen!

          Comment


          • #6
            [QUOTE=Christian Marquardt;222042]Die Zeiten der Optimierungen auf Compilerebene sind eigentlich vorbei, da moderne Compiler schon hochoptimierten Code erzeugen.

            na na .... auch hier wird man doch eines besseren belehrt !!!

            also ... bei LInQ (z.B) lese ich ja stets ... wäre super "vorCompiliert und OPTIMIERT"
            > bei dem average( Funktiondings ... bringt dies (gelesen) wohl so einige %ent

            aber:
            bei z.B. folgender (simplen Linq-) abfrage: Datensätze = 100.000

            [highlight=vbnet]

            Dim Testquery = From item As Stock In _stockContext _
            Let identifier As String = item.Identifier _
            Let intervalIndex As Long = (item.Datum.ToBinary \ Math.Max(1, _stockContext.Interval.Ticks)) * Math.Max(1, _stockContext.Interval.Ticks) _
            Group item By identifier, intervalIndex Into Group _
            Let Hoch As Double = Group.Max(Of Double)(Function(item As Stock) item.Hoch) _
            Let Tief As Double = Group.Min(Of Double)(Function(item As Stock) item.Tief) _
            Select New Stock(identifier, Date.FromBinary(intervalIndex), _stockContext.Interval, Group.Count, Group.First.Erster, Group.Last.Schluss, Hoch, Tief)
            ' bem: ... as Stock = from ... hat nix gebracht
            ' ... mit und/oder "toList" etc. auch nix ....
            ' ... ohne "Select" bringts a bisserl was ... TestQuery.Count > 337 ms
            [/highlight]

            Zeit in ms: 416 für - 20.000 > 5 minBalken

            versus: "guter alter selberBastelCode" ebenfalls: 100.000 Datensätze

            [highlight=vbnet]
            ' hier nur 1 durchlauf durch 100.000 ds
            For i As Integer = 1 To 2 'tblList.Count - 1


            ' newSt = _stockContext.Stocks(0)
            Dim aktListe As StockContext = tblList(i - 1).tbl
            Dim newSt As New Stock
            For Each Echart As Stock In aktListe

            'intervalIndex = (Echart.Datum.ToBinary \ Math.Max(1, tblList(i).Interval.Ticks)) * Math.Max(1, tblList(i).Interval.Ticks)
            'If intervalIndex <> altInt Then '
            If Echart.Datum.Ticks Mod tblList(i).Interval.Ticks = 0 Then

            tblList(i).tbl.Add(newSt)
            newSt = New Stock
            newSt.Datum = Echart.Datum
            newSt.Erster = Echart.Erster
            newSt.Hoch = Echart.Hoch
            newSt.Tief = Echart.Tief
            newSt.Schluss = Echart.Schluss
            newSt.DatDbl = newSt.Datum.ToOADate
            End If

            If Echart.Hoch > newSt.Hoch Then newSt.Hoch = Echart.Hoch
            If Echart.Tief < newSt.Tief Then newSt.Tief = Echart.Tief

            newSt.Schluss = Echart.Schluss
            altInt = intervalIndex
            Next
            Next
            stw.Stop()
            Console.WriteLine("for e - Ende: " & stw.ElapsedMilliseconds)

            ' verkürzte version ... da eigentlich hier 6 tabellen rauskommen
            ' bem. 6 tabellen = 71 ms :-)

            [/highlight]

            ... aus 100.000 DS gruppiert auf 20.000 (5minbalken) = 59 ms


            was muss ich LINQ sagen dies doch bitte schneller zu machen ?




            Neuer Eintrag: mir wurde gerade von nem vb.linq-engel zugeflüstert:

            dass diese/meine logik ...logischerweise deshalb so "schnell" ist ... weil
            die DATEN bereits vorsortiert vorliegen ... und LINQ diese erstmal
            vorsortieren "muss" ... stimmt, daran liegt dann wohl auch der unterschied ...

            dann wäre es mal cool ... LINQ beizubringen - auf bedarf - nicht vorzuSortieren :-)
            Zuletzt editiert von Fremder; 21.04.2010, 09:55.
            Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
            Um heute vorm PC zu sitzen!

            Comment


            • #7
              Ich habe von

              Optimierungen auf Compilerebene

              gesprochen


              Gegen Codegefrickel wird man wohl maschinell nichts machen können
              Christian

              Comment


              • #8
                aber LINQ sollte doch "vorOptimiert" sein ... dachte ich ?

                Codegefrickel bezieht sich dann auf gruppierungen "individuellerArt" ?

                oder einfach auf meinen (schlechten) stiel ? *hüster*



                PS: jetzt läuft w7 endlich *g*
                Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
                Um heute vorm PC zu sitzen!

                Comment


                • #9
                  Codegefrickel bezieht sich darauf, dass es noch kein Programm (einsetzbares) gibt, welches den Code analysiert, erkennen kann, was programmiert werden sollte, und dies dann ggf. durch optimierten Code tauscht
                  Christian

                  Comment


                  • #10
                    gut so ... sonst HÄTTET IHR ja nix mehr zu tun *g*

                    danke dennoch .. und gut zu wissen ... nicht zu "versteift" an "einerSache" hängen zu bleiben ...

                    obs nun 400 ms oder 70 ms sind macht ja - erstmal - nix ... den praktisch ist Linq ansich ja schon

                    abends ....
                    Vor 4,5 Millionen Jahren lernten ~wir~ aufrecht zu gehen!
                    Um heute vorm PC zu sitzen!

                    Comment

                    Working...
                    X