You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ec.go 1.1 kB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package opt
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/ioswitch/dag"
  4. "gitlink.org.cn/cloudream/common/utils/lo2"
  5. "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2/ops2"
  6. "gitlink.org.cn/cloudream/storage/common/pkgs/ioswitch2/parser/state"
  7. )
  8. // 减少未使用的Multiply指令的输出流。如果减少到0,则删除该指令
  9. func RemoveUnusedMultiplyOutput(ctx *state.GenerateState) bool {
  10. changed := false
  11. dag.WalkOnlyType[*ops2.ECMultiplyNode](ctx.DAG.Graph, func(node *ops2.ECMultiplyNode) bool {
  12. outArr := node.OutputStreams().Slots.RawArray()
  13. for i2, out := range outArr {
  14. if out.Dst.Len() > 0 {
  15. continue
  16. }
  17. outArr[i2] = nil
  18. node.OutputIndexes[i2] = -2
  19. changed = true
  20. }
  21. node.OutputStreams().Slots.SetRawArray(lo2.RemoveAllDefault(outArr))
  22. node.OutputIndexes = lo2.RemoveAll(node.OutputIndexes, -2)
  23. // 如果所有输出流都被删除,则删除该指令
  24. if node.OutputStreams().Len() == 0 {
  25. node.RemoveAllInputs()
  26. ctx.DAG.RemoveNode(node)
  27. changed = true
  28. }
  29. return true
  30. })
  31. return changed
  32. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。