首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >降低Websharper应用程序的性能,可能导致内存泄漏

降低Websharper应用程序的性能,可能导致内存泄漏
EN

Stack Overflow用户
提问于 2017-07-17 08:44:04
回答 1查看 174关注 0票数 2

下面一个页面Websharper应用程序中的示例代码显示了在我的项目中遇到的问题。

随着时间的推移,有一些行动,逐步需要更长的时间。它每隔几秒钟发生一次。经过20分钟或更长的时间后,Chrome开始提醒setTimeout和requestAnimationFrame所用的时间超过50 or。

观察Chrome中的内存图表,即使手动激活垃圾收集,内存的使用似乎也会增加。我怀疑这导致了常规垃圾收集的负载,并导致了延长的执行时间。

有什么办法找出并解决这个问题吗?

代码语言:javascript
复制
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
open WebSharper.UI.Next.Html
open WebSharper.UI.Next.Notation

[<JavaScript>]
module Client =    
    type IndexTemplate = Templating.Template<"index.html">

    type T = {
        i : int
        n : float
        d : float
    }

    let Main =
        JQuery.Of("#main").Empty().Ignore

        let v = Var.Create {
            i = 0
            n = 0.0
            d = 0.0
        }

        let rec f (n : float) =
            let w = !v
            v :=
                {w with
                    i = w.i + 1
                    n = n
                    d = n - w.n
                }
            s()
        and s () =
            JS.RequestAnimationFrame f |> ignore

        s()

        div [
            div [v.View |> View.Map (fun t -> "Frame " + string t.i) |> textView]
            div [v.View |> View.Map (fun t -> sprintf "Started: %.1f" t.n) |> textView]
            div [v.View |> View.Map (fun t -> sprintf "Duration: %.1fms" t.d) |> textView]
        ]
        |> Doc.RunById "main"

我正在使用Websharper 3.6.20.6、WebSharper.UI.Next 3.6.18.2和Chrome 59.0.3071.115。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-24 11:43:09

谢谢你的报告,我已经把它链接到了这张票上:https://github.com/intellifactory/websharper.ui.next/issues/129

今天将有一个带有补丁的WebSharper 4 beta堆栈版本,我们将研究如何将一些重要的改进移植到WebSharper 3。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45139595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档