Mehr Performance
-
Angesteckt von diesem Thread wollte ich auch mal dieses Project Euler probieren.
Wie kann ich die Performance von meinem Code verbessern? Für die obere Grenze von 10000000000ull brauche ich bereits 3,26 Sekunden (lineares Laufzeitverhalten mit
limitsowieso).// in project euler #1: a = 3, b = 5, limit = 1000 std::uint64_t sum_multiples(std::uint64_t a, std::uint64_t b, std::uint64_t limit) { using namespace std; uint64_t result = 0; for (uint64_t n = 1; n * a < limit; ++n) result += n * a; for (uint64_t n = 0, run = true; run; ++n) for (uint64_t x = 1; x < a; ++x) if ((n * a + x) * b < limit) result += ((n * a + x) * b); else run = false; return result; }
-
Every language has an optimization operator. In C++ that operator is ‘//’
:p
-
Wieviele durch 3 teilbare zahlen gibt es denn bis 1000? Genau 1000/3 (abgerundet) = 333, und was ist deren Summe? Genau 3*(1+2+...+333) = 3*333*334/2.
Analog für 5. Die durch 15 teilbaren wurden doppelt gezählt, müssen also noch abgezogenw werden. Ergibt insgesamt konstante laufzeit, wir brauchen nichtmal ne schleife.
-
obvious troll is obvious.
akzeptiere halt dass nicht jeder so gut im bezug auf mathematik / programmierung ist und sich trotzdem in dem forum meldet.