动态调用类方法后缓慢的快速代码

时间:2016-11-19 23:09:24

标签: swift class

我试图编写一个Swift类(在Playground中),它接受字符串字典(例如PixelGreyScale)并按顺序应用于图像中的每个像素。

我使用了类方法词典,但速度非常慢,我无法传递参数。

在下面的代码中,我的类被实例化,然后运行Process方法,接受方法字典(a technique I saw on SO - 是否有更好的方法从字符串动态运行方法变量):

// Create an instance of the class, passing in the raw image
let p = ImageProcessor(src: rawImage);

// use a dictionary of method calls to queue up the process
let stack = [
    { p.PixelGreyScale() }
]

// run the process
p.Process(stack)

Process方法调用堆栈中的每个方法并将当前像素设置为返回值:

func Process(stack: [() -> Pixel]) {
        for y in 0..<rgba.height {
            for x in 0..<rgba.width {
                let index = y * rgba.width + x
                currentIndex = index
                rgba.pixels[index] = stack[0]()
            }
        }
}

此代码运行,但我显然没有正确行事!我遇到以下问题:

  1. 运行年龄,除非stack字典为空。删除stack[0]()调用并不会加快速度 - 在给定索引处获取像素时,堆栈中的某些内容似乎会导致速度变慢。
  2. 由于我如何使用stack字典来调用方法,我无法传递参数,不得不求助于将事物移入和移出类变量。我尝试使用performSelector,但每次尝试使用参数时都会出现例外情况。
  3. 有没有办法传入字符串字典并使用它来控制执行哪些方法,使用参数并且没有速度问题?

0 个答案:

没有答案