Skip to content

very bad perf on _datetime.datetime.__format__ #1201

@trim21

Description

@trim21

current text format use YYYY-MM-DD HH:mm:ss.SSS and handled by _datetime.datetime.__format__, which is very slow comparing to stdlib version %Y-%m-%d %H:%M:%S.%f%z.

For example, I use os.devnull as sink and try these 2 format, YYYY-MM-DD HH:mm:ss.SSS will use 44s but %Y-%m-%d %H:%M:%S.%f%z use only 20s. (also it's 10s for stdlib logging)

import os
import timeit

from loguru import logger as logger_new
from loguru_old import logger as logger_old

logger_new.info("hello world")
# exit(0)

logger_new.remove(0)
logger_new.add(os.devnull)
logger_old.remove(0)
logger_old.add(os.devnull)

def loguru_new_case():
    logger_new.info("hello {}", "b")


def loguru_old_case():
    logger_old.info("hello {}", "b")


print(timeit.timeit(loguru_new_case))
print(timeit.timeit(loguru_old_case))

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovement to an already existing feature

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions