【发布时间】:2019-01-16 14:31:43
【问题描述】:
请不要判断问题的类型。它可能与软件算法和概念有关。这就是为什么我必须写 the link 已经在服务器故障时询问它的原因。
1->项目.net web app的算法和概念。
客户端的onblur事件进行ajax调用-> 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 秒。我知道代码组织得不好,但问题是为什么应用程序端负责进行更多计算时速度如此之慢。
任何线索都会非常有用。谢谢。
服务器是 Server 2018 SP 1,.net Frame Work 4.0.30319.42000 它只发生在生产环境中。 在开发方面,应用程序运行速度非常快,即使限制为 450。
【问题讨论】:
-
你的算法是 O(n)。你需要一本字典。
-
有各种性能分析器可用于此类故障排除。没有可重复的样本讨论是没有意义的。
-
“我找不到任何文档”?谷歌很容易把这个回复给我,blogs.msdn.microsoft.com/benjaminperkins/2017/12/13/…
-
你想做什么?问题不清楚。 450 次函数调用的 40 秒看起来就像每次迭代的网络往返/上下文切换。请指定在服务器上调用什么函数,在客户端上调用哪个函数。另外,我怀疑
Global.holidayGlobals.Values没有存储在进程中,而是来自另一个进程,比如内存缓存。 -
所以
Global.holidayGlobals是Dictionary<TKey, TValue>。holidayGlobals是 getter 每次访问时都从另一个源获取数据的属性吗?还是只是定义为Dictionary<TKey, TValue> holidayGlobals { get; set; }(空的getter和setter)?
标签: c# asp.net .net iis .net-remoting