我目前正在尝试提高F#程序的性能,使其与C#等效程序一样快.该程序确实将滤镜数组应用于像素缓冲区.始终使用指针访问内存.
以下是应用于图像的每个像素的C#代码:
unsafe private static byte getPixelValue(byte* buffer, double* filter, int filterLength, double filterSum)
{
double sum = 0.0;
for (int i = 0; i < filterLength; ++i)
{
sum += (*buffer) * (*filter);
++buffer;
++filter;
}
sum = sum / filterSum;
if (sum > 255) return 255;
if (sum < 0) return 0;
return (byte) sum;
}
Run Code Online (Sandbox Code Playgroud)
F#代码看起来像这样,占用C#程序的三倍:
let getPixelValue (buffer:nativeptr<byte>) (filterData:nativeptr<float>) filterLength filterSum : byte =
let rec accumulatePixel (acc:float) (buffer:nativeptr<byte>) (filter:nativeptr<float>) i =
if i > 0 …Run Code Online (Sandbox Code Playgroud) 原来的问题...............................................
如果您是drawRect的高级用户,您将知道当然"drawRect"在"所有处理完成"之前不会实际运行.
setNeedsDisplay将视图标记为无效和操作系统,并且基本上等待所有处理完成.在您想要拥有的常见情况下,这可能会令人愤怒:
当然,当你执行上面的1-6时,所有发生的事情是drawRect 仅在步骤6之后运行一次.
您的目标是在第5点刷新视图.怎么办?
解决原始问题............................................. .
总之,您可以(A)背景大画,并调用前景进行UI更新或(B)可争议地有四种"即时"方法建议不使用后台进程.为了起作用的结果,运行演示程序.它有所有五种方法的#defines.
Tom Swift介绍的真正令人震惊的替代解决方案..................
汤姆斯威夫特解释了非常简单地操纵运行循环的惊人想法.以下是触发运行循环的方法:
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];
这是一个真正令人惊叹的工程.当然,在操作运行循环时应该非常小心,并且许多人指出这种方法严格适用于专家.
引起的奇怪问题............................................. .
尽管许多方法都有效,但实际上并没有"工作",因为在演示中你会看到一个奇怪的渐进式减速神器.
滚动到我在下面粘贴的"答案",显示控制台输出 - 您可以看到它逐渐减慢的速度.
这是新的SO问题:
运行循环/ drawRect中的神秘"渐进式减速"问题
这是演示应用程序的V2 ...
http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html
你会看到它测试所有五种方法,
#ifdef TOMSWIFTMETHOD
[self setNeedsDisplay];
[[NSRunLoop currentRunLoop]
runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]];
#endif
#ifdef HOTPAW
[self setNeedsDisplay];
[CATransaction flush];
#endif
#ifdef LLOYDMETHOD
[CATransaction begin];
[self setNeedsDisplay];
[CATransaction commit];
#endif
#ifdef DDLONG
[self setNeedsDisplay];
[[self layer] displayIfNeeded];
#endif …Run Code Online (Sandbox Code Playgroud) 在我看来,漂亮的打印JSON是一个简单的任务,JavaScript应该能够处理它.有没有人编写(或运行)JavaScript函数来执行此操作?
.Net IPAddress类GetAddressBytes方法可用于将IPAddress转换为字节数组.
我的问题是我有这些字节数组,如何将它们转换回IPAddress对象,或IP字符串?(对于IPv4和IPv6都有一个解决方案很重要).
我想匹配:
some.name.separated.by.dots
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.
我可以像这样匹配一个部分
\w+\.
Run Code Online (Sandbox Code Playgroud)
怎么说"重复那个"
在Play框架中,我有一些模型,其中的字段是对其他模型的对象引用.当我使用renderJSON时,我不希望包含这些对象引用.目前,根据我的需要,我创建了一个单独的视图模型类,其中包含我想要的字段,并在控制器中根据需要创建此视图类的实例.理想情况下,我希望能够使用模型类本身,而无需编写视图类.
有没有办法注释一个字段,以便在使用renderJSON时不会序列化?
我试图在我的iPad应用程序中显示一个UISplitViewController,将其显示为模态视图控制器.我设法显示它,但由于某种原因,模态视图左侧有一个间隙,状态栏的大小也会在方向更改时保留.

有人知道为什么会这样吗?或者如果这是可能的话?也许我只是在挖自己一个巨大的洞.
我正在使用代码清单编辑乳胶中的许多文档,目前输出为pdf.
由于我在这些文档的团队中工作,我经常需要手动将组成员所做的更改集成到latex源中.
大多数小组成员都不知道乳胶,所以我想有办法让他们以类似于降价的方式进行文件格式化.
由于乳胶文档由数字组成,有引用并使用lslisting包,我想知道是否可以将这些特定区域映射到简单的markdown样式语法.
工作流程示例:
它能以某种方式实现这样的工作流程吗?也许我的特定工作流程已有解决方案?
.net ×2
ios ×2
json ×2
c# ×1
cocoa ×1
f# ×1
html ×1
ip-address ×1
ipad ×1
iphone ×1
java ×1
javascript ×1
latex ×1
markdown ×1
pdf ×1
performance ×1
pretty-print ×1
r ×1
regex ×1
runloop ×1