Tag: 性能

我刚刚发现为什么所有的ASP.Net网站都很慢,我正在设法解决这个问题

我刚刚发现,ASP.Net Web应用程序中的每个请求都在请求开始时获得一个Session锁,然后在请求结束时释放它! 如果这件事的影响在你身上丢失了,就像我刚开始时那样,这基本上意味着如下: 任何时候,ASP.Net网页都需要很长时间才能加载(可能是因为数据库调用缓慢或者其他原因),并且用户因为厌倦了等待而决定导航到不同的页面,所以他们不能! ASP.Net会话锁迫使新的页面请求等待,直到原始请求完成其痛苦的缓慢加载。 Arrrgh。 每当UpdatePanel缓慢加载,并且用户决定在UpdatePanel完成更新之前导航到不同的页面…他们不能! ASP.net会话锁迫使新的页面请求等待,直到原始请求完成其痛苦的缓慢加载。 双Arrrgh! 那么有什么选择? 到目前为止,我已经想出了: 实现ASP.Net支持的自定义SessionStateDataStore。 我还没有发现太多复制,似乎是一种高风险,容易搞砸。 跟踪所有正在进行的请求,并且如果请求来自同一用户,请取消原始请求。 似乎有点极端,但它会工作(我认为)。 不要使用会话! 当我需要用户的某种状态时,我可以使用缓存来代替,也可以使用经过身份验证的用户名或关键项。 再次显得有点极端。 我真的不敢相信ASP.Net微软团队会在4.0版本的框架中留下如此巨大的性能瓶颈! 我错过了什么明显的? 在会话中使用ThreadSafe集合有多难?

什么是逐行读取文本文件的最快方法?

我想逐行阅读一个文本文件。 我想知道如果我在.NET C#范围内尽可能有效地做到这一点。 这是我到目前为止的尝试: var filestream = new System.IO.FileStream(textFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite); var file = new System.IO.StreamReader(filestream, System.Text.Encoding.UTF8, true, 128); while ((lineOfText = file.ReadLine()) != null) { //Do something with the lineOfText }

哪个更快:堆栈分配或堆分配

这个问题可能听起来相当简单,但这是我和另一位与我合作的开发人员的辩论。 我正在考虑堆栈分配的东西,而不是分配给他们。 他正在跟我说话,看着我的肩膀,说这是没有必要的,因为他们的表现是一样的。 我始终认为堆栈的增长是一个固定的时间,堆分配的性能取决于堆的当前复杂性,以便分配(找到合适大小的空洞)和解除分配(减少空洞以减少分段)如果我没有弄错的话,许多标准库实现在删除期间需要时间来做这件事)。 这让我觉得这可能是非常依赖编译器的东西。 对于这个项目,我特别使用了一个Metrowerks编译器来实现PPC架构。 洞察这个组合将是最有帮助的,但一般来说,对于GCC和MSVC ++,情况如何? 堆分配不是堆栈分配的高性能吗? 有没有区别? 或者差异如此微小,就变成毫无意义的微观优化。

我应该什么时候使用交叉申请内部加入?

使用CROSS APPLY的主要目的是什么? 我已经阅读(隐约地通过互联网上的帖子),如果您正在进行分区,那么在选择大数据集时, cross apply可以更有效。 (寻呼想到) 我也知道CROSS APPLY 不需要UDF作为右表。 在大多数INNER JOIN查询(一对多关系)中,我可以重写它们来使用CROSS APPLY ,但是它们总是给我等同的执行计划。 任何人都可以给我一个很好的例子,当CROSS APPLY在INNER JOIN也能工作的情况下INNER JOIN吗? 编辑: 这是一个简单的例子,执行计划是完全一样的。 (给我看一个他们不同的地方, cross apply地方是更快/更有效率) create table Company ( companyId int identity(1,1) , companyName varchar(100) , zipcode varchar(10) , constraint PK_Company primary key (companyId) ) GO create table Person ( personId int identity(1,1) , personName varchar(100) , companyId […]

聚簇和非聚簇索引究竟意味着什么?

我对数据库的暴露程度有限,只使用数据库作为应用程序员。 我想知道有关聚簇和非聚簇索引。 我GOOGLE了,我发现是: 聚集索引是一种特殊类型的索引,对表中记录的物理存储方式进行重新排序。 所以表只能有一个聚簇索引。 聚集索引的叶节点包含数据页面。 非聚簇索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上的行的物理存储顺序不匹配。 非聚集索引的叶节点不包含数据页面。 相反,叶节点包含索引行。 我在SO中发现的是,聚集索引和非聚集索引之间有什么区别? 。 有人能用简单的英文来解释吗?

如何在C ++中“返回一个对象”?

我知道这个标题听起来很熟悉,因为有很多类似的问题,但是我要求问题的另一个方面(我知道堆栈中的东西和将它们放在堆上的区别)。 在Java中,我总是可以返回对“本地”对象的引用 public Thing calculateThing() { Thing thing = new Thing(); // do calculations and modify thing return thing; } 在C ++中,为了做类似的事情,我有两个选项 (1)当我需要“返回”一个对象时,我可以使用引用 void calculateThing(Thing& thing) { // do calculations and modify thing } 然后像这样使用它 Thing thing; calculateThing(thing); (2)或者我可以返回一个指向动态分配的对象的指针 Thing* calculateThing() { Thing* thing(new Thing()); // do calculations and modify thing return thing; } 然后像这样使用它 […]

在.NET中,哪个循环运行得更快,“for”还是“foreach”?

在C#/ VB.NET / .NET,哪个循环运行更快, for或foreach ? 自从我读了一个for循环比foreach循环更快的工作, 很久以前我就认为它适用于所有集合,泛型集合,所有数组等等。 我搜索了Google,发现了一些文章,但其中大多数是不确定的(阅读文章的评论),并公开结束。 最理想的是将每个场景列出,并为相同的最佳解决方案。 例如(只是一个例子): 迭代1000个以上的字符串数组 – 比foreach更好 用于迭代IList (非泛型)字符串 – foreach比for更好 在网上找到一些相同的参考资料: 由Emmanuel Schanzer创作的盛大的旧文章 CodeProject FOREACH VS. 对于 博客 – 为了达到或不达到foreach ,这就是问题所在 ASP.NET论坛 – NET 1.1 C# for vs foreach [编辑] 除了可读性方面外,我对事实和数字也很感兴趣。 有一些应用程序在最后一英里的性能优化挤压很重要。

何时使用Vanilla JavaScript与jQuery?

我注意到,当监视/试图回答常见的jQuery问题时,有一些使用javascript的实践,而不是jQuery,实际上使您能够写得更少,并且做得相同。 也可能会产生性能优势。 一个具体的例子 $(this) vs this 在引用被点击的对象id的点击事件中 jQuery的 $(this).attr("id"); 使用Javascript this.id; 还有其他常见的做法吗? 在某些Javascript操作可以更容易地完成的情况下,不用将jQuery加入混合。 或者这是一个罕见的情况? (实际上需要更多代码的jQuery“快捷方式”) 编辑:虽然我欣赏关于jQuery与普通的JavaScript性能的答案,但我实际上正在寻找更多的定量答案。 当使用jQuery时 ,实际上会更好(可读性/紧凑性),以使用纯javascript而不是使用$() 。 除了我在原来的问题中给出的例子。