MATLAB打开文件进行编辑速度慢

3
我在Mac OS 10.8.3上使用r2013a,发现打开.m文件进行编辑时性能非常慢。我在open filename.m上运行了分析器,看到了下面的结果:

Profile information

它为什么要把它当作视频文件来读取?难道它不能先检查文件扩展名吗?既然是一个.m文件,为什么还要检查它是否是视频?
如果有解决方案,请告诉我。这个延迟让我很烦。

我在Win7机器上使用r2013a - 它有相同的问题。 VideoReader被调用以打开.cpp文件。双击文件比使用打开命令快大约3倍,但它也使用VideoReader。第一次打开文件时,大部分时间都在VideoReader.init中,共计5.6秒。随后的操作速度更快,主要是因为VideoReader.init速度更快。 - Bull
很奇怪。我不知道任何带有 .m 扩展名的电影格式,当然也没有 VideoReader 支持的任何格式。听起来可能是对 strncmp 的滥用。我在 The MathWorks 网站上没有看到任何关于此问题的错误报告。你可以提交一个 - horchler
2个回答

4

请使用 edit filename.m 替代。它不会调用 VideoReader,速度更快,可以提升10倍以上。


可以,有点意思。你有什么想法让它在侧边栏浏览器中双击 .m 文件时使用吗? - jstm88
1
罪魁祸首是调用open的finfo()命令。你可以通过编辑uiopen.m(使用which查找)并将“open(fn)”替换为“edit(fn)”来修复双击行为。然而,这可能会导致长时间忘记更改后出现不良后果,所以我不打算这样做。你可能比我更有勇气。 - Bull

3
似乎编辑 finfo() 可以解决问题。如果您没有权限编辑原始文件,只需将修改后的副本放在某个地方并将其添加到 MATLAB 的路径中即可。
修改后的 finfo() 有以下几行(从我拥有的版本开始的第 56 行)。唯一的变化是在处理 .m 文件之前进行了所有视频/音频处理:
if ~isempty(ext)
    if any(strcmp(ext, {'m'}))
        % try to find handler on the path
        openAction = which(['open' ext]);
        loadAction = which([ext 'read']);
    else

        % Get the list of supported video file formats on this platform
        try
            videoFileFormats = VideoReader.getFileFormats;
            % extracting video file extensions
            videoFileExt = {videoFileFormats.Extension};
...
...
...
end %(line 134)

现在,从当前文件夹面板或命令窗口打开 .m 文件的速度都很快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接