ENIACJushi
ENIACJushi
> 怪,我用隔壁worldedit 复制几个区块都是ms级别 C++插件应该是获取levelChunk然后遍历其中的方块,SE插件可能每次获取方块都要获取一次levelChunk,速度就慢了 内存出现异常应该是某处没有释放(猜测) (在邮件里回复后发现在这里没有显示,又发了一遍)
> 最近应该是把getBlock的底层接口换成了获取失败的检查(以前失败直接抛异常),可能多了一些检查的性能开销。 对于性能敏感的插件,我的建议是最好不要用llse写,c++做出来性能可能提升几十近百倍。 这样的话算法复杂度仍为O(n),总处理时间 - 方块数量应该是线性关系,而实际上经过测试,这一关系更接近于O(n^2)表现出来的,也就是说随着处理方块数量的增大,它(总处理时间 - 方块数量)的增长率越来越大,单个方块的处理时间越来越长。所以性能下降应该另有原因。  还有一点,这种情况只会在所有处理全部集中于一个游戏刻时发生,如果处理一部分方块再等待几个游戏刻,单个方块的处理速度会返回到起点。
> 怪,我用隔壁worldedit 复制几个区块都是ms级别 C++插件应该是获取levelChunk然后遍历其中的方块,SE插件可能每次获取方块都要获取一次levelChunk,速度就慢了 内存出现异常应该是某处没有释放(猜测) (在邮件里回复后发现在这里没有显示,又发了一遍)
> 最近应该是把getBlock的底层接口换成了获取失败的检查(以前失败直接抛异常),可能多了一些检查的性能开销。 对于性能敏感的插件,我的建议是最好不要用llse写,c++做出来性能可能提升几十近百倍。 这样的话算法复杂度仍为O(n),总处理时间 - 方块数量应该是线性关系,而实际上经过测试,这一关系更接近于O(n^2)表现出来的,也就是说随着处理方块数量的增大,它(总处理时间 - 方块数量)的增长率越来越大,单个方块的处理时间越来越长。所以性能下降应该另有原因。  还有一点,这种情况只会在所有处理全部集中于一个游戏刻时发生,如果处理一部分方块再等待几个游戏刻,单个方块的处理速度会返回到起点。