def METHOD_NAME(options_str=None):
    """
    Enable the operator-level timing using PaddlePaddle's profiler.
    The profiler uses a independent variable to count the profiler steps.
    One call of this function is treated as a profiler step.
    Args:
      profiler_options - a string to initialize the ProfilerOptions.
                         Default is None, and the profiler is disabled.
    """
    if options_str is None:
        return
    global _prof
    global _profiler_step_id
    global _profiler_options
    if _profiler_options is None:
        _profiler_options = ProfilerOptions(options_str)
    # profile : https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/performance_improving/profiling_model.html#chakanxingnengshujudetongjibiaodan
    # timer_only = True  only the model's throughput and time overhead are displayed
    # timer_only = False calling summary can print a statistical form that presents performance data from different perspectives.
    # timer_only = False the output Timeline information can be found in the profiler_log directory
    if _prof is None:
        _timer_only = str(_profiler_options["timer_only"]) == str(True)
        _record_shapes = str(_profiler_options["record_shapes"]) == str(True)
        _prof = profiler.Profiler(
            scheduler=(_profiler_options["batch_range"][0], _profiler_options["batch_range"][1]),
            on_trace_ready=profiler.export_chrome_tracing(_profiler_options["profile_path"]),
            timer_only=_timer_only,
            record_shapes=_record_shapes,
        )
        _prof.start()
    else:
        _prof.step()
    if _profiler_step_id == _profiler_options["batch_range"][1]:
        _prof.stop()
        _prof.summary(op_detail=True, thread_sep=False, time_unit="ms")
        _prof = None
        if _profiler_options["exit_on_finished"]:
            sys.exit(0)
    _profiler_step_id += 1