“HH\Lib\Vec\slice()”在切入相接容器时会变慢
** 描述错误** " HH\Lib\Vec\slices() " 的文献表明,时间复杂度的尺度与切片的长度相同,但用线性 " 抵消 " 来切除 " offset=n长度 " 或 " low-数字 " 的尺度。
在实际工作量(使用可移植-hack-ast-linters)中,可以将全跑后行(包括剖析和linting)减少30%. 将9万分之9万分之一的元素从"活塞"中切出,比"天真的Hack"慢了1500-ish倍,用于回波认证模式的循环.
** 单独代码或复制问题的其他方式**
复制行为的步骤 :
- 创建一个长度足够大的视频。
- 将 " Vec\slice() " 称为 " (美元、低数字、低数字) "
- 将 " Vec\slices() " 改为 " (美元、高数字、低数字) "
- 注意到如果 " 抵销美元 " 的论点扩大,切片需要更长的时间
** 预期行为**
如果该论点有相接要素,则通过相抵访问这些要素,而不是走相抵之前的输入长度.
** 实际行为**
输入以 " ArrayIter " 为空环行走,直到抵消被消耗。
因此,给Vec\slice'(vec [0、1、2、3、.、999999]、99995]ArrayIter'走出`99995'元素,然后消耗其余5个元素。
https://GitHub.com/facebook/hhvm/blob/e81b014b5784b75b0d40360be369ef30f283c130/hphp/runtim/ext/aray/ext aray.cpp#L948-L958
** 环境**
- 操作系统
乌邦图 26.04
- 安装方法
Docker拉起她sheltheodorelayton/hhvm-basic:26.06.05-固态
- HHVM 版本 - 翻译:
HipHop VM 26.6.5 (rel)(非低音) 编译器:头/hhvm-oss-20260605-固态-浣熊-0-g0a1acba1cb9adf2489535d992f0584a62233ed64 Repo schema: 97520 be2e2a04014 a90e9088f1d478f2a46008df
** 其他情况**
以下承诺:https://GitHub.com/hershel-theodore-layton/hhvm/commit/b983bd51b1256cd8c3fed53b229970870723e50 执行如果是毗连的,则用于(;抵消 < stop;++offset)出[;]=[offset];Hack的循环。
这种由hhvm运行的可移植-hack-ast-linters组成的结构将整个工程延缓性降低了30%. 便携-hack-ast包含剪接的"Source Order". 它从文件所显示的Ast 节点数的宽度中切出一个 " 节点 " (由 " int " 支持)。 切入文件时,从整体上切出一个子集的用例会变慢.
关上门 公共函数被剪切出源命令( P) 节点从, 节点$ to 包容, [):vec<节点>{ $ from = 节点 id to int(从美元); $to including = 节点 id to int ($ including) ; 返回 Vec\slic($- > source Order,$从,$to 包含 -$从+1) ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
剖析和浏览500个黑客文件的整个运行时间
· 变体 · 第10页 · 第25页 · 第50页 · 第75页 · 第90页 · 第95页 · 第99页
| -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
. . . . . . .内容来源: facebook/hhvm