Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
是否可以在Ruby中配置文件系统交互?_Ruby_Profiling_Io - Fatal编程技术网

是否可以在Ruby中配置文件系统交互?

是否可以在Ruby中配置文件系统交互?,ruby,profiling,io,Ruby,Profiling,Io,是否可以对Ruby应用程序进行概要分析,以查看它与文件系统的交互程度 Background:过去,我编写的代码只需读取一次循环中的文件。我希望确保消除所有此类代码。当然,您只需在脚本顶部添加require'配置文件即可: # myscript.rb require 'profile' Dir.entries(".").each { |e| puts e} $ ruby myscript.rb (文件名列表…) 或者,您可以在命令行上传入一个选项: $ ruby -r profile mys

是否可以对Ruby应用程序进行概要分析,以查看它与文件系统的交互程度


Background:过去,我编写的代码只需读取一次循环中的文件。我希望确保消除所有此类代码。

当然,您只需在脚本顶部添加
require'配置文件即可:

# myscript.rb
require 'profile'
Dir.entries(".").each  { |e| puts e}

$ ruby myscript.rb
(文件名列表…)

或者,您可以在命令行上传入一个选项:

$ ruby -r profile myscript.rb

如果您想更好地控制要分析的内容,请查看库。

我非常喜欢暴力

File.open(path, 'r') do |file|
  ...
end
File.mv(path, path + '.hidden')    # Temporary
如果代码尝试打开文件两次,第二次将找不到。测试完成后,可以使用shell one命令行反转重命名。在Bash中(也可能在其他*nix shell中):


现在已经有了完全可以实现这一目的的程序,您不需要复制。我认为你不应该用特殊的逻辑检查一个相对模糊的编程错误来使你的程序复杂化(至少,我从来没有意外地犯过你描述的错误)。在这种情况下,解决方案是从程序外部检查性能特性。假设您在Linux上,我将转向一个测试/规范,它在一个单独的线程中练习您的代码并监视(或类似)

好吧,你知道,如果它在不必要的I/O上花费了太多的时间,你会很快看到它的一些随机暂停。当然,如果您正在寻找不需要太多时间的I/O,它在这方面对您没有帮助。@Mike:我是在后一种情况下。可能会打开更像文件跟踪的东西?对不起,帮不了什么忙。
File.open(path, 'r') do |file|
  ...
end
File.mv(path, path + '.hidden')    # Temporary
for i in `ls *.hidden` ; do mv $i ${i%.hidden} ; done