gpt4 book ai didi

c# - 请求越多意味着从缓存对象中读取的速度越慢?

转载 作者:行者123 更新时间:2023-11-30 19:52:44 25 4
gpt4 key购买 nike

请不要判断问题的类型。它可能与软件算法和概念有关。这就是为什么我必须写 the link它已经在服务器故障时被询问。

1->.net web app项目的算法和概念。

Client's onblur event makes an ajax call-> UI -> functionUI() -> > APP <<

functionUI()

int limit=450;
public bool functionUI(){

for(int i=0;i< limit ; i++){
functionApp(i);
}

}


public static bool functionApp(int i){
foreach(HolidayEntity h in Global.holidayGlobals.Values /*CachedList*/){
if(h.Value == i){
return false;
}
return true;
}

}

2- 问题 ui 端的限制值如果是响应持续时间的 2 或 20 倍是好的。但是当是450次的时候。在客户端获得结果需要 40 秒。我知道代码组织得不好,但问题是为什么应用程序端在负责进行更多计算时这么慢。

任何线索都会非常有用。谢谢。

Servers are Server 2018 SP 1, .net Frame Work 4.0.30319.42000 It is only happened in production environment. In development side the application runs quite fast even the limit is 450.

最佳答案

基本上这种缓慢是由于犯了这个错误:

for (var i = 0; i<100; i++)
{
// do a network-roundtrip/remoting/io/etc
}

解决方案是将其更改为:

// do a network-roundtrip/remoting/io/etc
for (var i = 0; i<100; i++)
{
// do something with the result of the above call
}

因此,如果我没理解错的话,数据 Global.holidayGlobals.Values来自另一个进程,如内存缓存。如果是这样,您最简单的选择是将您的代码更改为:


int limit=450;
public bool functionUI()
{
var holidays = Global.holidayGlobals.Values;
for(int i=0;i< limit ; i++)
{
functionApp(i, holidays);
}
}


public static bool functionApp(int i, IEnumerable<HolidayEntity> holidays)
{
foreach(var h in holidays)
{
if(h.Value == i)
{
return false;
}
}
return true;
}

我们仍在循环中做太多工作(我们可以通过创建字典并查找它来改进算法)但对于您的数字 (450),与一次往返内存缓存的时间相比,这可以忽略不计。

更新

从问题的评论看来,holidaysDictionary<int, HolidayEntity>如果是这样,代码可以像这样变得更好:

public bool functionUI()
{
var holidays = Global.holidayGlobals.Values;

for(int i=0;i< limit ; i++)
{
functionApp(i, holidays);
}
}

public static bool functionApp(int i, IEnumerable<HolidayEntity> holidays)
{
if (holidays.TryGetValue(i, out var h))
{
return false;
}
return true;
}

关于c# - 请求越多意味着从缓存对象中读取的速度越慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54219294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com