Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance tcl加载多个进程所用的时间_Performance_Time_Tcl_Proc - Fatal编程技术网

Performance tcl加载多个进程所用的时间

Performance tcl加载多个进程所用的时间,performance,time,tcl,proc,Performance,Time,Tcl,Proc,以下两种情况之间是否存在性能(所用时间)差异 shell中只加载了一个TCL进程,您正在执行该进程 将加载1000个不同的进程,以便shell访问与案例1相同的进程 程序的成本是由于: 在调用proc时定义它。通常很快;它只需要更新一些哈希表并分配一点内存来存储主体的字符串表示 将其编译为字节码。虽然速度不是很快,但仍然不算太差,因为编译器的编写速度相当快,而且Tcl在缓存字节码方面非常积极。通常在第一次运行过程时发生(因为有一个内部调用“获取字节码,如果需要首先编译源代码”) 进入(和离开)过

以下两种情况之间是否存在性能(所用时间)差异

  • shell中只加载了一个TCL进程,您正在执行该进程
  • 将加载1000个不同的进程,以便shell访问与案例1相同的进程

  • 程序的成本是由于:

  • 在调用
    proc
    时定义它。通常很快;它只需要更新一些哈希表并分配一点内存来存储主体的字符串表示
  • 将其编译为字节码。虽然速度不是很快,但仍然不算太差,因为编译器的编写速度相当快,而且Tcl在缓存字节码方面非常积极。通常在第一次运行过程时发生(因为有一个内部调用“获取字节码,如果需要首先编译源代码”)
  • 进入(和离开)过程的堆栈帧。更多的内存分配和初始化,但使用一个特殊的内存分配器使其更快。这也是将过程的参数存储到每个形式参数的局部变量中的地方
  • 实际运行字节码。这取决于你在你的过程中写了什么
  • (不是特定于过程的。)查找命令也有成本。Tcl做了一些缓存来尽量降低成本,甚至不考虑字节码编译过程
  • 我建议不要过分担心过程本身的效率(与放入过程中的代码的效率相反),而是以尽可能清晰易懂的方式对代码进行分区。是的,如果您已经确定了瓶颈(例如C代码的目标位),您可以做一些事情来大大加快它们的速度,但是实际的过程总数很少是一个问题