使用FTP协议以递归方式创建目录(类似于UNIX mkdir -p)的最快算法是什么?
我考虑过一种方法:
但如果目录的一部分很可能存在,那么这可能会有糟糕的表现。例如,通过一些摊销,“/ a / b / c / d / e / f / g”路径的“/ a / b / c / d”部分存在%99%的时间。
答案 0 :(得分:1)
考虑到发送命令和接收响应大部分时间,创建目录路径的最快方法是使用尽可能少的命令。
除了尝试创建或cd进入目录以检查其存在之外没有别的办法,只需使用mkdir a; mkdir a / b; ...,mkdir a / b / c / d / e / f将是通常最快的方式(不要进入子目录创建下一个子目录,因为这会延长进程)。
如果以这种方式创建多个目录,您当然可以跟踪已创建的顶级目录。此外,根据您的路径长度和上层目录已存在的可能性,您可以尝试从例如mkdir a / b / c(对于a / b / c / d / e / f)然后如果没有成功则回溯。但是,如果目录不存在,那么从长远来看这实际上会更慢。
答案 1 :(得分:0)
如果现有目录层次结构同样可能在任何给定深度结束,则二进制搜索作为起始位置将是最快的方式。但是作为dseifert points out,如果大多数时候目录已经存在下来说级别为k,那么在级别k而不是级别n / 2开始二进制搜索会更快。
顺便说一下,您必须创建很多 非常深目录才能进行此类优化,值得花时间。你确定你没有过早优化吗?