Currently I just add the following lines around my code:

import time
start_time = time.time()

# my code here

print "time elapsed: {:.2f}s".format(time.time() - start_time)

Is it possible to achieve the same without adding code to every script I want to time? Either adding something in run configuration or using a plugin?

You can profile your script by hitting the ‘profile’ button (it is to the right of the ‘run’, ‘debug’, and ‘run with coverage’ buttons):

Profile button

Among the output, you will find the name of the script itself, and the time needed to run it.

Note: the function is available in PyCharm PROFESSIONAL 2017.1 for the Linux platform; other installations might not provide the profiler button.

Since not everyone has PyCharm Pro which can measure script’s running time, here is a simple solution that uses decorator. We only need to add a single line of code to measure the running time of any function as follows:

import time

def timeit(func):
    Decorator for measuring function's running time.
    def measure_time(*args, **kw):
        start_time = time.time()
        result = func(*args, **kw)
        print("Processing time of %s(): %.2f seconds."
              % (func.__qualname__, time.time() - start_time))
        return result

    return measure_time

def func():
    for _ in range(3):

if __name__ == "__main__":


Processing time of func(): 3.00 seconds.

I know it is late but I wanted the same thing and here is what I did:

Create another python file in the directory of your codes:

import time
import test

where test is your program name.
So if you want to run any program just run it from here by just changing test.

Keep in mind that import runs the code normally if you haven’t used:

if __name__=="__main__":

Just write corresponding unit test (works with community edition).

from unittest import TestCase

from yourscript import yourcode

class TestSol(TestCase):
    def benchmark(self):
        res = yourcode('banana')
        self.assertEqual(res, 77)

PyCharm neatly displays time taken for each test.

Another solution would be to wrap the interpreter with time.
But since it will help in other ways, I recommend taking the unit-tests road.