我是F#的新手,今天下午才开始学习它.
我注意到的是,当通过fsi获取类型信息时,我得到以下信息:
val it : (char list -> string -> string list) = <fun:clo@0>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,(char列表 - >字符串 - >字符串列表)意味着该函数采用char列表并返回一个函数,该函数接受一个字符串并返回一个字符串列表.
但是,我不明白"它"的用法.
感谢您的任何信息!
我想优化这段代码:
public void PopulatePixelValueMatrices(GenericImage image,int Width, int Height)
{
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
Byte pixelValue = image.GetPixel(x, y).B;
this.sumOfPixelValues[x, y] += pixelValue;
this.sumOfPixelValuesSquared[x, y] += pixelValue * pixelValue;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将用于图像处理,我们目前正在运行约200张图像.我们优化了GetPixel值以使用不安全的代码,我们没有使用image.Width或image.Height,因为这些属性增加了我们的运行时成本.
但是,我们仍然处于低速状态.问题是我们的图像是640x480,所以循环的中间被调用大约640x480x200倍.我想问一下是否有办法以某种方式加速它,或者让我相信它的速度足够快.也许一种方法是通过一些快速的Matrix Addition,或者Matrix Addition固有的n ^ 2操作无法加速它?
也许通过不安全的代码进行数组访问可以加快速度,但是我不知道如何去做,以及它是否值得花时间.可能不是.谢谢.
编辑:谢谢你的所有答案.
这是我们正在使用的GetPixel方法:
public Color GetPixel(int x, int y)
{
int offsetFromOrigin = (y * this.stride) + (x * 3);
unsafe
{
return Color.FromArgb(this.imagePtr[offsetFromOrigin + 2], this.imagePtr[offsetFromOrigin …Run Code Online (Sandbox Code Playgroud) 我正在使用.NET创建一个人工生命程序,我正在使用C#在Singleton中定义的伪随机类.我的想法是,如果我在整个应用程序中使用相同的随机数生成器,我只能保存种子,然后从种子重新加载以重新计算某个有趣的运行.
public sealed class RandomNumberGenerator : Random
{
private static readonly RandomNumberGenerator instance = new RandomNumberGenerator();
RandomNumberGenerator()
{
}
public static RandomNumberGenerator Instance
{
get
{
return instance;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还想要一个可以给我两个不同随机数的方法.
public static Tuple<int, int> TwoDifferentRandomNumbers(this Random rnd, int minValue, int maxValue)
{
if (minValue >= maxValue)
throw new ArgumentOutOfRangeException("maxValue", "maxValue must be greater than minValue");
if (minValue + 1 == maxValue)
return Tuple.Create<int, int>(minValue, maxValue);
int rnd1 = rnd.Next(minValue, maxValue);
int rnd2 = rnd.Next(minValue, maxValue);
while (rnd1 == …Run Code Online (Sandbox Code Playgroud) 我正在构建一个基于后缀树的索引器应用程序,这使我能够非常快速地索引整个文档和搜索字符串,子字符串等.
我正在做的是在文本框中输入一个字符串,按下按钮,并运行查询后缀树的函数,并将字符串的所有出现位置添加到列表框中.所以列表框里面有很多整数.
通常,这很好.例如,搜索"向导"或"Gandalf",或"hobbit"(我将FOTR索引为测试:D)工作正常且花花公子.但是,我现在用字母e来试试.
问题是字母e的位置确实列在列表框中.全部88974个.然而,当我向下滚动通过拖动滚动条按钮,列表框似乎循环回到顶端当我在各地的项目60000个左右.由于我尝试滚动页面并且一切正常,因此问题更加严重.
我知道,通过88974(基于listbox.Items.Count)项目的滚动是有点极端,但在逻辑上,没有任何理由应该有这样的问题.
感谢您阅读这篇文章!
编辑:对所有回答的人,谢谢你回答.我最终使用listview实现了它,并且速度更快,可以很好地保存很多项目.谢谢!
我在用户控件中有一个超链接,我想通过使用声明性属性来设置可见性,即
<asp:HyperLink ImageUrl="/images/icons/rss.png" Visible="<%# ShowRssIcon %>" ID="FeedHyperLink" runat="server"></asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)
但是,即使ShowRssIcon为false,它也始终可见。ShowRssIcon是在用户控件上设置的简单属性。即使将ShowRssIcon设置为始终在显示的超链接中返回假结果。
但是,设置Visible="false"或Visible="true"手动按预期方式工作。同样,在on Page_Load事件后面的代码中设置属性也可以。
有任何想法吗?谢谢。