- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前面临的问题是必须根据给定列表的长度进行计算。由于我使用的列表相当大,因此必须迭代列表的所有元素才能知道其大小,这是一个很大的性能损失。
解决该问题的建议方法是什么?
我想我总是可以将大小值与列表一起携带,这样我就可以事先知道它的大小,而不必在调用站点计算它,但这似乎是一种脆弱的方法。我还可以定义一个自己的列表类型,其中每个节点都有其列表大小作为属性,但这样我就会失去我的编程语言的标准列表库提供的杠杆作用。
你们在日常生活中如何处理这个问题?
我目前正在使用 F#。我知道我可以使用.NET 的可变(数组)列表,这可以解决问题。不过,我对纯粹不可变的函数方法更感兴趣。
最佳答案
内置的 F# 列表类型没有任何长度缓存,并且无法以某种巧妙的方式添加它,因此您需要定义自己的类型。我认为为现有的 F# list
编写一个包装器type 可能是最好的选择。
这样,您可以避免显式转换 - 当您包装列表时,它实际上不会复制它(如在 svick 的实现中),但包装器可以轻松缓存 Length
属性:
open System.Collections
type LengthList<'T>(list:list<'T>) =
let length = lazy list.Length
member x.Length = length.Value
member x.List = list
interface IEnumerable with
member x.GetEnumerator() = (list :> IEnumerable).GetEnumerator()
interface seq<'T> with //'
member x.GetEnumerator() = (list :> seq<_>).GetEnumerator()
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module LengthList =
let ofList l = LengthList<_>(l)
let ofSeq s = LengthList<_>(List.ofSeq s)
let toList (l:LengthList<_>) = l.List
let length (l:LengthList<_>) = l.Length
使用包装器的最佳方法是使用 LengthList.ofList
用于创建LengthList
来自标准 F# 列表并使用 LengthList.toList
(或只是 List
)属性,然后再使用标准 List
中的任何函数模块。
但是,这取决于代码的复杂性 - 如果您只需要几个地方的长度,那么将其单独保留并使用元组 list<'T> * int
可能会更容易.
关于haskell - 在函数式编程上下文中使用不可变列表获取恒定长度检索时间常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294577/
要求: 我们在数据库中有值 Chennai Baroda Bangalore New Delhi São Paulo, Lisboa San Jose 等... 所以我想将这些字符串转换成一个唯一的短
我需要通过 TCP 加密和发送数据(每条消息从几百字节到几百兆字节)以 block 从 Java 到 C++ 程序,并且需要发送的大小提前发送数据,以便收件人知道何时停止读取当前消息并处理它,然后等待
我不太知道如何问这个问题,因此我将其作为示例: 想象在一个应用程序中您有一个Country对象。此对象有两个属性:Name和'Bordering Countries'集合。稍后可能会添加更多属性,但这
我们正在尝试使用 IoT 中心、流分析和表存储来处理仪表板上的事件驱动图标(开/关/事件)。我无法让实际过程在 6 秒内完成。流分析的水印恒定为 5 秒。该网站声称即时处理。 https://azur
我正在尝试获取一个 JTabbedPane,其中所有选项卡(实际选项卡,而不是组件)具有相同的宽度(最宽标签所需的最小宽度或恒定宽度)。 我试图覆盖 BasicTabbedPaneUI.getTabB
你好安卓开发者, 我正在使用 OpenGLES 1.0 在 Eclipse 中为 Android 开发一个简单的游戏。我正在使用 Samsung Galaxy S2 Android(2.3) 作为开发
我正在尝试使用 ColorMatrix 为整个图像设置一个恒定的色调值。我的目标是使整个图像看起来颜色相同,而不会失去任何区域的亮度。我找到了一种使用 ColorMatrix 来移动图像的色调值的方法
我最近将我的 Postgres 数据库从 Windows 迁移到 CentOS 6.7。在 Windows 上,数据库从不使用太多 CPU,但在 Linux 上,我看到它使用恒定的 ~30% CPU(
你好,我正在用 SDL2 开发一款很棒的游戏,我添加了一个 FPS 调节器以使其在每台机器上都能流畅运行,但后来我创建了一个示例程序来输出 fps(不是调节,只是输出以查看电流的功率机器运行 ) 我在
我在 IntelliJ IDEA 13.0 中开发了一个应用程序,但是当我在我的设备上运行该应用程序时,它会不断等待调试器(如果我在 Debug模式下运行,调试器连接时没问题)但是如果远离计算机,我无
我想在 stat_密度2 图中绘制多个组,其中 alpha 值与每组中的观察计数相关。然而,由 stat_密度2d 形成的水平似乎已标准化为每组中的观察数量。例如, temp <- rbind(mov
我是一名优秀的程序员,十分优秀!