F# 正确使用序列缓存

2024-05-11

我正在尝试将 Seq.cache 与我制作的函数一起使用,该函数返回最多为 N 的素数序列(不包括数字 1)。我无法弄清楚如何将缓存的序列保留在范围内,但仍然使用它在我的定义中。

let rec primesNot1 n = 
    {2 .. n} 
    |> Seq.filter (fun i -> 
        (primesNot1 (i / 2) |> Seq.for_all (fun o -> i % o <> 0)))
    |> Seq.append {2 .. 2}
    |> Seq.cache

关于如何使用 Seq.cache 使其更快的任何想法?目前它不断从范围中下降,并且只会降低性能。


Seq.cache缓存一个IEnumerable<T>实例,以便序列中的每个项目仅计算一次。不过,就您而言,您正在缓存函数返回的序列,每次调用该函数时都会得到一个new缓存的序列,这对你没有任何好处。正如您所概述的那样,我认为缓存并不是真正解决您的问题的正确方法;相反,你可能应该研究一下记忆​​。

如果不是定义一个函数,给出小于的素数n如果你想定义一个无限可枚举的素数序列,那么缓存就更有意义。那看起来更像是这样的:

let rec upFrom i =
  seq { 
    yield i
    yield! upFrom (i+1)
  }

let rec primes =
  seq { 
    yield 2
    yield!
      upFrom 3 |>
      Seq.filter (fun p -> primes |> Seq.takeWhile (fun j -> j*j <= p) |> Seq.forall (fun j -> p % j <> 0))
  }
  |> Seq.cache

我还没有比较这个方法和你的方法的性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F# 正确使用序列缓存 的相关文章

  • 让浏览器缓存我的动态 PHP 样式表

    我想在 PHP 文件 styles php 中创建一个样式表 以便样式表变得动态 具体取决于请求的用户 对于每个单独的用户来说 样式表是不变的 因此应该缓存在他的客户端浏览器上 我读过 您可以通过设置内容类型和缓存控制等标头来实现此目的 但
  • F# 中的选项类型如何工作

    因此 我一直在阅读 Apress 的 Expert F 书籍 主要将其用作构建玩具式 F 库时的参考 但有一点我未能掌握 那就是 Option 类型 它是如何工作的以及它在现实世界中的用途是什么 选项类型至少为similar to Null
  • 打印从 1 到 100 的质数

    此 C 代码打印出以下素数 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 但我不认为这就是我的书所希望的写作方式 它提到了一些关于数字的平方根的内容
  • 如何从 C# 可移植类库 (PCL) 添加对 F# 可移植库的引用

    我有一个项目 其中包含两个 F 项目和一个 C 项目 我想在其中编写一些 XUnit 测试 FS PL F 3 1 3 3 1 0 可移植库 FS PL Legacy F 31 2 3 5 1 可移植库 旧版 测试 C NET 4 5 Wi
  • Zend_Cache_Backend_Sqlite 与 Zend_Cache_Backend_File

    目前我正在使用 Zend Cache Backend File 来缓存我的项目 尤其是来自外部 Web 服务的响应 我在想是否能找到将结构迁移到 Zend Cache Backend Sqlite 的一些好处 可能的优点是 文件系统有序 缓
  • 基于函数签名的模式匹配

    在 F 中 您可以对函数签名进行模式匹配 我想用一个函数来装饰多个函数 该函数测量函数的执行情况并调用 statsd 我当前的功能是 let WrapFunctionWithPrefix metrics Metric Client IRec
  • 合并具有公共字段的列表的最快方法?

    我正在学习 F 并且正在做赔率比较服务 ala www bestbetting com 以将理论付诸实践 到目前为止 我有以下数据结构 type price Bookie string Odds float32 type selection
  • 使用 FParsec 解析 int 或 float

    我正在尝试使用 FParsec 解析文件 该文件由 float 或 int 值组成 我面临两个问题 无法找到好的解决方案 1 Both pint32 and pfloat将成功解析相同的字符串 但给出不同的答案 例如pint32将返回3解析
  • Async.AwaitTask 在 f# 中如何工作?

    我知道 f 和 c 异步模型之间的主要区别在于 在 f 中 除非您调用 Async RunSynchronously 之类的内容 否则异步执行不会开始 在 C 中 当方法返回任务时 通常 并非总是 立即在后台线程中开始执行 Async Aw
  • 让 Doctrine 默认使用结果缓存

    我正在将 Memcache 绑定到 Doctrine 看来我必须这样做useResultCache明确地在每个查询中 是否可以做到true默认情况下 能够useResultCache false 哪里不需要 创建一个显式设置的包装类 函数u
  • 使用biopython写入fasta文件时出错

    我使用以下代码将 fasta 序列写入文件 from Bio import SeqIO sequences KKPPLLRR add code here output handle open example fasta w SeqIO wr
  • 如何为 Azure Function 启用“始终开启”功能?

    我有一个具有 3 个功能的功能应用程序 其中一个功能每 2 分钟定时器触发一次 我观察到 过了一会儿 该功能停止被触发 但当我进入门户时又重新启动 据我了解 原因是默认情况下 始终开启 处于关闭状态 但是 当我进入应用程序设置 常规设置时
  • 将代码保存在 L1 缓存中

    我一直在阅读维基百科关于 K 编程语言的文章 http en wikipedia org wiki K programming language Performance characteristics这就是我所看到的 解释器的小尺寸和语言的
  • 帮助我了解实体框架 4 延迟加载的缓存

    我在实体框架 4 0 中遇到了一些意想不到的行为 我希望有人可以帮助我理解这一点 为了解决这个问题 我使用了 Northwind 数据库 我还使用默认的代码生成器 不是 poco 或自我跟踪 我希望每当我查询框架的上下文时 如果我尚未获取这
  • F# 核心库源代码有一个用于将元组编译为结构的标志,但我无法使其工作

    这是后续问题这个提议 https fslang uservoice com forums 245727 f language suggestions 6148669 short tuples compiled as structs up t
  • MVC 5 中的“缓存配置文件”

    我是 MVC 的初学者 我有一个项目要从 MVC2 转换到最新版本的 MVC 我读了一些关于MVC 4的书 所以我开始了解主要机制 但是 在转换我的 MVC 2 解决方案时 我遇到了一个属性问题 OutputCache 例如 我有多个这样的
  • 如何在 F# 中打印整个列表?

    当我使用 Console WriteLine 打印列表时 它默认仅显示前三个元素 如何让它打印列表的全部内容 您可以将 A 格式说明符与 printf 一起使用来获得 美化的 列表打印输出 但与对象上的 Console WriteLine
  • 具有异步操作的面向铁路的编程

    以前问过类似的问题 但不知何故我没有找到出路 再次尝试另一个例子 作为起点的代码 稍作修改 可在https ideone com zkQcIU https ideone com zkQcIU 它有一些识别问题Microsoft FSharp
  • 如果目标是 x64,为什么 Seq.iter 比 for 循环快 2 倍?

    免责声明 这是微基准测试 如果您对此主题感到不满意 请不要评论诸如 过早优化是邪恶的 之类的言论 示例是针对 x64 Net4 5 Visual Studio 2012 F 3 0 的发行版 并在 Windows 7 x64 中运行 经过分
  • 开发中的 Laravel 和视图缓存——无法立即看到变化

    我和一些朋友决定开始一个项目 我们偶然发现了 Laravel 并认为它可能是一个很好的工具 我们开始在本地使用它来开发一些页面 并注意到一些奇怪的事情 当我们用不同的信息更新视图时 大约需要 5 到 10 分钟视图信息才会发生变化 这就像

随机推荐

  • R 中的聚类分析:确定最佳聚类数

    如何选择最佳的聚类数量来进行 k 均值分析 绘制以下数据的子集后 多少个簇比较合适 如何进行聚类树突分析 n 1000 kk 10 x1 runif kk y1 runif kk z1 runif kk x4 sample x1 lengt
  • 使用表情来分配角色 Discord.js

    在我的不和谐服务器中 作为一种验证方法 我希望我的机器人让所有用户对消息做出反应 然后获得经过验证的角色 并删除旧角色 我当前的代码不会授予或删除角色 但不会出错 client on messageReactionAdd function
  • .NET MVC - 一次提交相同类型的多个模型

    我认为我有一个非常简单的场景 但似乎无法掌握如何在 NET 的 MVC 框架中做到这一点 最简单地说 这是一种对人员进行排名的形式 我希望将每个人的姓名及其姓名旁边的文本框列在一页上 Razor Html 如下所示 using Html B
  • 除了 GET 和 POST 之外,如何从浏览器向 RESTful 应用程序发送任何内容?

    我没有得到 RESTful 的东西 是的 我知道如何从浏览器向我的应用程序发送 GET 请求 这是通过 URL 链接 a href user someone 并且还可以通过form方法发送POST请求 a
  • 为什么 C++ 标准没有将 sizeof(bool) 定义为 1?

    Size of char signed char and unsigned char由 C 标准本身定义为 1 个字节 我想知道为什么它没有定义sizeof bool also C 03 标准 5 3 3 1 说 sizeof char s
  • 如何将jquery.post中的数据发送到使用ViewModel作为参数的mvc控制器?

    我正在使用 ASP NET MVC 编写应用程序 我有带有操作的控制器 它使用一些 ViewModel 作为参数 如何使用 jquery post 将表单数据发送到该 mvc 控制器 post Yourcontroller YourActi
  • 使用任务的经典永无止境的线程循环?

    给出了一个非常常见的线程场景 宣言 private Thread thread private bool isRunning false Start thread new Thread gt NeverEndingProc thread S
  • Unity - 在生成时获取随机颜色

    我有一个小问题 我想在我的场景中生成四边形 它们都应该有红色或绿色作为材质 但 Random Range 函数只能是 int 我该如何解决它 void SpawningSquadsRnd rndColor 0 Color red rndCo
  • 如何解析 Google Alerts 中的数据?

    首先 除了解析 Google 发送给您的电子邮件文本之外 您如何将 Google Alerts 信息存入数据库 似乎没有 Google Alerts API 如果您必须解析文本 您将如何解析电子邮件的相关部分 创建警报时 将 传送至 设置为
  • 查询中的存储过程

    有一个程序获取文件列表 顾名思义 返回一个文件列表以及更多选项 那么是否可以在查询选择中使用此过程 像这样的东西 select Field1 from Image where Field2 IN call GetFileList 你应该把它
  • iOS 13 UIActivityViewController 在图像保存后自动呈现以前的 VC

    我正在尝试实现 将图像保存到库 功能 然后返回到当前视图控制器 但在新的 iOS 13 上 它会返回到呈现当前视图控制器的视图控制器 PHPhotoLibrary requestAuthorization status PHAuthoriz
  • CSS 转换的中断对于相同的属性值不起作用

    I ve 回答了一个问题 https stackoverflow com a 43372990 3162554关于如何在悬停子元素时启动动画 然后保留应用的样式 直到取消悬停父元素 然而 我在我提出的解决方案中发现了一个我无法解释但我想理解
  • 使用C标准数学库精确计算标准正态分布的CDF

    标准 C 数学库不提供计算标准正态分布 CDF 的函数 normcdf 然而 它确实提供了密切相关的函数 误差函数 erf 和互补误差函数 erfc 计算 CDF 的最快方法通常是通过误差函数 使用预定义常量 M SQRT1 2 来表示 d
  • C# PasswordDeriveBytes:似乎 Salt 并不重要

    可能我误解了什么 以下代码通过 CryptDeriveKey 使用两种不同的盐生成两个相等的密钥 这是控制台结果 盐1 21 3e 18 a3 9a 8b 5f gt 键 da 89 ea 3d 91 08 20 98 20 e9 dc 4
  • 是否有一个实用程序可以在给定 ANTLR 语法的情况下生成匹配的字符串?

    我有一个 ANTLR 语法 我想模 糊我的解析器 您是否正在寻找 CFG 语法的生成 IE 语法接受的字符串的生成 这可能是检查语法正确性的好主意 但请记住 可接受的字符串集很可能是无限的 任何真正严重的错误应该已经在语法规范中显而易见 并
  • matplotlib imshow() 和像素强度

    我试图了解矩阵的值是如何输入到 matplotlib 的imshow 函数确定灰度模式下像素的强度 考虑示例代码 import random import matplotlib pyplot as plt import matplotlib
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS
  • IE8 和怪异模式

    IE8 是否像 IE6 7 一样以怪异模式运行 我有一个网页 其中有一些非常奇怪的代码 内容以填充和负边距居中 它在 IE6 7 和其他浏览器中可以正常工作 但在 IE8 中 内容区域的宽度只有一半并且不居中 怪异模式的标志 源代码在 DO
  • 在 Ruby 中生成 GUID

    我有一个问题 用 GUID 很容易解决 特别是 对于密码重置工作流程 我想将 GUID 令牌发送到用户的电子邮件并让他们使用该令牌重置密码 由于 GUID 是唯一的 因此这非常安全 并且可以避免我通过电子邮件向人们发送密码 这是有风险的 我
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq