Tag: 性能

从EF转向Fluent NHibernate:内存泄漏,架构

下午好,我正在将一个相当大的项目迁移到Fluent NHibernate,用于单声道。 我已经掌握了大部分关键function,但是我遇到了内存问题。 目前,此代码位于我的两个控制器中。 这似乎不是最优化的。 但我不确定在哪里放这个。 private static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MySQLConfiguration.Standard.ConnectionString( c => c.FromConnectionStringWithKey(“DashboardModels”) )) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .BuildSessionFactory(); } ISessionFactory sessionFactory = CreateSessionFactory(); 我的大多数数据库调用都是AJAX,有几次调用。 这让我相信我创造了太多会议,而这些会议尚未发布。 public ActionResult ReadAccounts([DataSourceRequest] DataSourceRequest request) { DataSourceResult result; using (var session = sessionFactory.OpenStatelessSession()) using […]

setInterval()如何影响性能?

我们正在使用Twitter Bootstrap作为框架构建Web应用程序,并且在显示/隐藏工具提示时遇到问题。 除了试图找到实际问题的解决方案之外,我对我们在此期间使用的解决方法有疑问: 性能方面,使用setInterval()通常是个坏主意吗? 如何衡量由此造成的性能影响? 是否有更好的方法来不断检查元素的存在并将其删除? // temporary workaround to remove unclosed tooltips setInterval(function() { if ( $(‘.tooltip.in’).length > 1 ) { $(‘.tooltip’).remove(); } }, 1000);

$ .empty()足够大的ajaxy应用程序吗?

一直在使用应用程序,因为它有点太大我想到了改善内存管理的方法,因为应用程序主要在Javascipt上运行。 因此,每次单击导航项时,我都会将jquery称为空,然后通过ajax显示html。 例如: //$.ajaxSetup(); called before this //$this is the attached element $.ajax({success:function(data){ $this.empty().html(data.output).fadeIn(400); //more javascript stuff like loading tinymce or jquery ui }}); 这足以防止内存泄漏吗? 我不完全确定空的是什么,但我假设它删除了该div中的所有DOM元素以及任何其他对象和事件? 顺便说一句。 您可以在http://webproposalgenerator.com/和http://webproposalgenerator.com/demo找到该应用。 任何提高性能/安全性的提示或任何反馈都将非常感激。

jQuery插件Chosen(增强mutliselects)在Chrome中运行良好,但在Internet Explorer中运行缓慢

我目前正在使用Chosen jQuery插件 。 看看我的小提琴: http : //jsfiddle.net/3XWSe/ 尝试Chrome和Internet Explorer中的小提琴(我使用IE 11测试)。 请注意,在Chrome浏览器中单击多选时有一个延迟(4或5秒),而在Chrome中则非常少,几乎没有。 此示例下拉列表列出了德克萨斯州的所有城市,并且有近5000个选项。 我打开了selected.jquery.js并将问题跟踪到这个调用: Chosen.prototype.update_results_content = function(content) { return this.search_results.html(content); //<– Problem here when loading the large amount of HTML into the element }; 我注意到,在第一次点击后,如果我停止this.search_results.html更新所有后续点击,则多选将不再缓慢响应。 要解决第一次单击的问题,我需要以某种方式预加载内容。 有任何想法吗? 关于如何解决IE的这个性能问题的任何建议 ,或者你知道另一个可以在IE中处理这些大量选项的类似jQuery插件吗? (我试过select2和其他一些无济于事)。 编辑:由于这个问题在一年中变得流行,我想让大家知道我放弃了选择,现在使用Select2 4.0( 具有大数据和无限滚动的出色性能 )。 它似乎是为了让开发人员能够更容易地装饰和改变它而在移动设备上运行。

如何在浏览器重新resize时最有效地检查某些“断点”?

我正在玩一些定义了两个断点的响应式设计: Mobile > max-width 320px Tablet portrait > max-width 767px 在桌面上我有很多动画+高级function正在使用Javascript。 在移动设备和平板电脑上我希望简化和禁用一些JS +“重建”一些DOM元素。 我想知道确定某些断点(宽度方面)的最有效方法是什么? 我在这里思考很多关于表现的事情。 我知道我可以通过以下方式检查窗口宽度: $( window ).resize(function() { if ($(window).width() > 320 && $(window).width() 401 && $(window).width() 769) { //desktop } }); 但这似乎是一个非常“昂贵”的行动? 任何可以用于此的轻量级库的建议也是非常受欢迎的!

哪个表现更好,检查类或添加类

如果你有一个在滚动事件上触发的函数,那就更好了。 检查是否已添加类,如果没有添加 不要做任何检查,只需在每次需要时添加该类。 $(document).on(‘scroll’, function () { var scrollTop = $(this).scrollTop(); if (scrollTop > 50) { if (!$(“nav .branding”).hasClass(“collapse”)) $(“nav .branding”).addClass(“collapse”); } else { if ($(“nav .branding”).hasClass(“collapse”)) $(“nav .branding”).removeClass(“collapse”); } }); 要么 $(document).on(‘scroll’, function () { var scrollTop = $(this).scrollTop(); if (scrollTop > 50) { $(“nav .branding”).addClass(“collapse”); } else { $(“nav .branding”).removeClass(“collapse”); } }); 第一次有一个额外的检查,但在另一个行动中可能(?)是一个更激烈的操作(?)

性能问题渲染大表

我正在尝试使用html表来显示大量数据。 在我的例子中,一个260列和117行的矩阵。 jQuery / Ajax用于获取数据。 和DataTables + Scroller展示这一切。 浏览器会冻结几秒钟以呈现所有内容。 我认为这是正常的 – 关于javascript的单线程性质。 不幸的是,一旦渲染,浏览器仍然有问题。 反应变得非常缓慢。 调整窗口大小,弹出开发工具等等…可以推测,因为它再次运行渲染过程? 或者内存消耗可能会通过屋顶? 我没有线索。 使用Scroller是因为还有更多行。 它适用于适当数量的列,效果很好。 它只提取并显示可见行。 在实践中,行没有限制。 唉,这不是列的情况。 他们总是包括在内。 有人知道如何“横向”应用相同的技巧吗? 只将可见列包含在DOM中? UPDATE 我在JSFiddle上准备了一个例子: url to code Why does SO need code ? 首先按“添加大表”,然后按“填充表”。 等待几秒钟才能看到表格。 花费的时间也会显示出来。 “渲染”时间基本上是DT呼叫的持续时间。 “构建”时间是创建整个事物所花费的时间 – 除了调用DT。 结果的样式并不是我们在这里所拥有的 – 但预期的结果是:显示它需要4 / 5s才能呈现它。 我不是JS / CSS / …大师; 因此,我呼吁帮助找出正在发生的事情。 要“模拟”服务器,DT设置对象将转换为字符串,然后再转换为JSON对象。 […]

如何加速jquery:选择的选择器?

我在一个包含3830个元素的网页中有一个下拉列表。 我知道,过分但无论如何。 在jquery中,我使用以下语句获取所选的选项值: $(“#institutionCombo:selected”)。val(); 在找到选择之前有一个明显的暂停。 一旦我得到了这个值,我就把它插入到页面的文本框中,所以我知道它有多快。 另外,我在Firebug中使用断点检查了它。 如果我去上学并使用这个javascript: var div = document.getElementById(“maindiv”); var select = div.getElementsByTagName(“select”)[0]; var ix = select.selectedIndex; var instId = select.options [ix] .value; 这种速度是瞬间的。 在jquery中是否有一些inheritance使得:当数字变得过高时,选择的选择器会如此慢? 我想在我的脚本中坚持使用jquery,有没有人建议加快在jquery中找到所选的选项? 谢谢, 克雷格

如何在mouseover事件处理程序中创建click事件处理程序?

我正在尝试构建某种元素检查器(如在Chrome / FF中)。 流程如下: 单击“开始检查”按钮。 你将鼠标hover在必要的元素上 您单击该元素。 您应该在控制台中看到该元素。 JSFiddle的例子 这是代码: startInspecting = function(){ $(‘section *’).on(‘mouseover.INSPECTOR’, function(e){ $(‘.hovered-element’).removeClass(‘hovered-element’); $(e.target).addClass(‘hovered-element’); $(this).on(‘click.INSPECTOR’, function(e){ $(‘section *’).off(‘mouseover.INSPECTOR’); $(‘section *’).off(‘click.INSPECTOR’); $(‘.hovered-element’).removeClass(“hovered-element”); console.log(e.target); }); }); }; 问题是 :每次我将鼠标hover在某个元素上时,都会附加click事件处理程序。 因此, 如果我将鼠标hover在p元素上5次,然后单击它 – 我将看到5个console.log而不是1 。 我尝试使用mouseenter/mouseleave实现它,但遇到了问题,每个元素只能hover一次 – 另一个JSFiddle示例 那么如何改进我的代码,无论我将鼠标hover在元素上多少次,它只有一个点击处理程序? 在此先感谢,任何帮助将不胜感激!

暂停JW播放器?

我有三个标签。 每个标签在滑块中有两个video。 问题是当我切换任何标签或点击任何一个video时,所有其他video都应暂停。 我可以收集所有的id然后循环使用stop()。但是有没有其他方法更清洁和更简单。 jwplayer(‘video_pub’).stop(); //for 1 video..how can i do for all videos?