Algorithm 在FTP中实现mktree的最快方法

Algorithm 在FTP中实现mktree的最快方法,algorithm,ftp,file-transfer,Algorithm,Ftp,File Transfer,使用FTP协议递归生成目录(类似于UNIX mkdir-p)的最快算法通常是什么 我曾考虑过一种方法: MKDIR节点 如果出现错误且节点剩余,则使用下一个节点转到1 结束 但是,如果目录的一部分很可能存在,那么这可能会导致性能下降。例如,在某些情况下,“/a/b/c/d/e/f/g”路径的“/a/b/c/d”部分有99%的时间存在。考虑到发送命令和接收响应占用了大部分时间,创建目录路径的最快方法是使用尽可能少的命令 因为除了尝试创建或cd到一个目录以检查其存在之外,没有其他方法,只需使用mkd

使用FTP协议递归生成目录(类似于UNIX mkdir-p)的最快算法通常是什么

我曾考虑过一种方法:

  • MKDIR节点
  • 如果出现错误且节点剩余,则使用下一个节点转到1
  • 结束

  • 但是,如果目录的一部分很可能存在,那么这可能会导致性能下降。例如,在某些情况下,“/a/b/c/d/e/f/g”路径的“/a/b/c/d”部分有99%的时间存在。

    考虑到发送命令和接收响应占用了大部分时间,创建目录路径的最快方法是使用尽可能少的命令

    因为除了尝试创建或cd到一个目录以检查其存在之外,没有其他方法,只需使用mkdir a;mkdir a/b。。。,mkdir a/b/c/d/e/f通常是最快的方式(不要将cd放入子目录中创建下一个,因为这会延长进程)


    如果以这种方式创建多个目录,当然可以跟踪已创建的顶级目录。此外,根据路径的长度和上层目录已经存在的可能性,您可以尝试从例如mkdir a/b/c(对于a/b/c/d/e/f)开始,如果没有成功,则返回。但是,如果目录不存在的可能性更大,那么从长远来看,这实际上会更慢。

    考虑到发送命令和接收响应会占用大部分时间,创建目录路径的最快方法是使用尽可能少的命令

    因为除了尝试创建或cd到一个目录以检查其存在之外,没有其他方法,只需使用mkdir a;mkdir a/b。。。,mkdir a/b/c/d/e/f通常是最快的方式(不要将cd放入子目录中创建下一个,因为这会延长进程)


    如果以这种方式创建多个目录,当然可以跟踪已创建的顶级目录。此外,根据路径的长度和上层目录已经存在的可能性,您可以尝试从例如mkdir a/b/c(对于a/b/c/d/e/f)开始,如果没有成功,则返回。但是,如果目录不存在的可能性更大,那么从长远来看,这实际上会更慢。

    如果现有的目录层次结构同样可能在任何给定的深度结束,那么对开始位置进行二进制搜索将是最快的方法。但是,如果大部分时间目录已经存在,比如说级别k,那么在级别k而不是级别n/2开始二进制搜索会更快


    顺便说一句,为了让这种优化值得你花时间,你必须创建很多非常深入的目录。您确定没有过早地进行优化吗?

    如果现有目录层次结构同样可能在任何给定深度结束,则对起始位置进行二进制搜索将是最快的方法。但是,如果大部分时间目录已经存在,比如说级别k,那么在级别k而不是级别n/2开始二进制搜索会更快

    顺便说一句,为了让这种优化值得你花时间,你必须创建很多非常深入的目录。你确定你没有过早地优化吗