Git Product home page Git Product logo

Comments (4)

vstinner avatar vstinner commented on August 26, 2024

When I designed pyperf, I didn't want to run tests in more than 1 process for different reasons:

  • A single CPU may benefit from Turbo Boost (even if pyperf suggests to disable it)
  • If you only isolate a single physical CPU core, multiple processes will race to grab CPU time
  • Intel CPU now have complex rules to select the CPU frequency: C-state, P-state, Turbo Boost, etc.

If you are confident that multiple processes will have similar or also the same performance, you can run a single process with computes tons of values in the same process: -p 1 -n 50, for example. Linux ASLR makes performance harder to measure.

Code placement became more critical for L1-instruction cache performance. See the BOLT compiler to see how it matters on nowadays Intel CPUs.

Well, said differently: you have to make a compromise between your "time budget" (how long all benchmarks will take on the wall clock) and the accuracy of results (get "reproducible" and "stable" benchmarks results). pyperf default configuration is designed for best accuracy. There is the --fast option which is a small trade-off towards shorter time budget: https://pyperf.readthedocs.io/en/latest/runner.html#loop-iterations

I also suggest you to have a look at my old articles: https://vstinner.github.io/category/benchmark.html

These days, I am away from pyperf and I let others like @corona10 considers changing pyperf ;-)

from pyperf.

corona10 avatar corona10 commented on August 26, 2024

Well, I am on the same side with @vstinner
We can provide such an option as optional until we know the use case of such an option.
I am conservative in providing such options.
Our biggest user is pyperformance, but I am sure that they want accuracy more than fast execution.

from pyperf.

ylxxwx avatar ylxxwx commented on August 26, 2024

Thanks for the reply. I am thinking if we can make pyperf to run load test as well with ability to generate request with certain qps. Another thought about that, or another project for that?

from pyperf.

corona10 avatar corona10 commented on August 26, 2024

if we can make pyperf to run load test as well with ability to generate request with certain qps.

If you are considering load tests for specific tests, why are you considering using pyperf instead of load testing tools?
I think that pyperf measures the performance of python code rather than measuring stress-test for external services.

from pyperf.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.