0 0

关于一个迭代的问题5

用一个三层迭代的,速度很慢,有没有好的解决方法

问题补充:
AngelAndAngel 写道
能否详细说明啊

<%int i = 0; bool falg = true; foreach (var item in model)//第一层
          { %>
        <%if (falg)
          {
              falg = false;%>
        <div class="Z_jobLayer_One Z_jobLayer_B">
            <%}
          else
          {
              falg = true; %>
            <div class="Z_jobLayer_One">
                <%} %>
                <div class="Z_jobLayer_One_L">
                    <ul>
                        <li>
                            <input id="<%= item.cascade_guid.MyRight(22) %>" onclick="checkedother('<%= item.cascade_guid.MyRight(22) %>','<%= item.cascade_name %>')"
                                class="checkbox" value="<%= item.cascade_name %>" style="border: none;" type="checkbox" /><%= item.cascade_name %>
                        </li>
                    </ul>
                </div>
                <div id="List<%=i %>" class="Z_jobLayer_One_R">
                    <%i++; foreach (var items in db.ViewListCategory(item.cascade_guid))//第二层
                      { %>
                     <ul>
                          <li>
                              <span onmousemove="javascript:showhtml('<%= items.cascade_guid.MyRight(22) %>', '<%= item.cascade_guid.MyRight(22) %>', '<%= items.cascade_name %>', '<%= item.cascade_name %>')" style="display: block;">
                              <%= items.cascade_name %>
                              </span>
                             
                              <div id="<%= items.cascade_guid.MyRight(22) %>show" class="Box" style=" position: absolute; z-index:999999px; display: none;">
                              </div>
                            
                          </li>   
                      </ul>
                    <%} %>
                </div>
第一层的底层public IQueryable<cascade> ViewListParent(string type)
        {
            return db.cascade.Where(d => d.cascade_type == type && d.cascade_pguid == "" && d.cascade_isdel == 0);
        }
第二层也是差不多。数据也就2000这样

问题补充:
AngelAndAngel 写道
你可以先在后台判断好了再放入页面了,在页面这种逻辑判断不太好

怎么判断?它是这样的。先找第一层,显示第一层中的标题,如果第一层中某个分类还有下级分类的话,显示它的标题。

问题补充:
AngelAndAngel 写道
你可以先在后台判断好了再放入页面了,在页面这种逻辑判断不太好

开始做的时候没有想到会出现这个问题,现在要是采用异步的又得改很多东西。所以想知道有没有好办法

问题补充:
高级java工程师 写道

<%int i = 0; bool falg = true; foreach (var item in model)//第一层 
          { %> 
        <%if (falg) 
          { 
              falg = false;%> 
        <div class="Z_jobLayer_One Z_jobLayer_B"> 
            <%} 
          else 
          { 
              falg = true; %> 
            <div class="Z_jobLayer_One"> 
                <%} %> 
                <div class="Z_jobLayer_One_L"> 
                    <ul> 
                        <li> 
                            <input id="<%= item.cascade_guid.MyRight(22) %>" onclick="checkedother('<%= item.cascade_guid.MyRight(22) %>','<%= item.cascade_name %>')" 
                                class="checkbox" value="<%= item.cascade_name %>" style="border: none;" type="checkbox" /><%= item.cascade_name %> 
                        </li> 
                    </ul> 
                </div> 
                <div id="List<%=i %>" class="Z_jobLayer_One_R"> 
                    <%i++; foreach (var items in db.ViewListCategory(item.cascade_guid))//第二层 
                      { %> 
                     <ul> 
                          <li> 
                              <span onmousemove="javascript:showhtml('<%= items.cascade_guid.MyRight(22) %>', '<%= item.cascade_guid.MyRight(22) %>', '<%= items.cascade_name %>', '<%= item.cascade_name %>')" style="display: block;"> 
                              <%= items.cascade_name %> 
                              </span> 
                              
                              <div id="<%= items.cascade_guid.MyRight(22) %>show" class="Box" style=" position: absolute; z-index:999999px; display: none;"> 
                              </div> 
                             
                          </li>    
                      </ul> 
                    <%} %> 
                </div> 
第一层的底层public IQueryable<cascade> ViewListParent(string type) 
        { 
            return db.cascade.Where(d => d.cascade_type == type && d.cascade_pguid == "" && d.cascade_isdel == 0); 
        } 
第二层也是差不多。数据也就2000这样
楼上说的很详细

这个是我的原码

问题补充:
AngelAndAngel 写道
假如你其他数据没什么用的话 ,直接sql查询,一步到位

要是查也只是查每层的数据而已。现在它有三层,每层显示的还外加html.这个一下来html也是很大的。现在影响网站速度的就是这个。

问题补充:
AngelAndAngel 写道
你动态的构造html或者一些dom,往往卡的不是服务器,而是浏览器受不了 所以卡,不信你看看任务管理器。

那是不是我动态的构造html比页面的html要好。速度比较快。比如一个网站(单一服务器)要从数据库里读出图片,是动态的构造img,还是只是输出图片的地址要好得多?

问题补充:
高级java工程师 写道
给你个建议,js写在<body>里吧,否则浏览器真的受不了

谢谢。js我都是放在一上文件里了。

问题补充:
AngelAndAngel 写道
你咋把意思听反了,动态的构造html肯定速度慢咯

但是在这个网站中我没有构造html啊。http://www.hbrc888.com/Index.aspx就是这个网站。变慢的就是刚才我放出来的代码

问题补充:
skzr.org 写道
速度慢:是这段佚代代码慢,还是指页面显示慢。
我感觉如果服务器不是太差,2000*2000的运算不会特别慢阿。


是这段佚代代码慢导致整个页面都慢。要是不要这个这段佚代代码能提高一倍这个
2011年10月10日 14:00

10个答案 按时间排序 按投票排序

0 0

采纳的答案

你可以先在后台判断好了再放入页面了,在页面这种逻辑判断不太好

2011年10月10日 14:19
0 0

速度慢:是这段佚代代码慢,还是指页面显示慢。
我感觉如果服务器不是太差,2000*2000的运算不会特别慢阿。

2011年10月10日 15:14
0 0

你咋把意思听反了,动态的构造html肯定速度慢咯

2011年10月10日 14:55
0 0

给你个建议,js写在<body>里吧,否则浏览器真的受不了

2011年10月10日 14:42
0 0

你动态的构造html或者一些dom,往往卡的不是服务器,而是浏览器受不了 所以卡,不信你看看任务管理器。

2011年10月10日 14:40
0 0

所以你直接用sql过滤啊 ,就查询有下级分类的数据,显示出来

2011年10月10日 14:40
0 0

假如你其他数据没什么用的话 ,直接sql查询,一步到位

2011年10月10日 14:30
0 0

那你直接用sql查询,下一层有分级的数据,然后直接在jsp中显示

2011年10月10日 14:29
0 0


<%int i = 0; bool falg = true; foreach (var item in model)//第一层 
          { %> 
        <%if (falg) 
          { 
              falg = false;%> 
        <div class="Z_jobLayer_One Z_jobLayer_B"> 
            <%} 
          else 
          { 
              falg = true; %> 
            <div class="Z_jobLayer_One"> 
                <%} %> 
                <div class="Z_jobLayer_One_L"> 
                    <ul> 
                        <li> 
                            <input id="<%= item.cascade_guid.MyRight(22) %>" onclick="checkedother('<%= item.cascade_guid.MyRight(22) %>','<%= item.cascade_name %>')" 
                                class="checkbox" value="<%= item.cascade_name %>" style="border: none;" type="checkbox" /><%= item.cascade_name %> 
                        </li> 
                    </ul> 
                </div> 
                <div id="List<%=i %>" class="Z_jobLayer_One_R"> 
                    <%i++; foreach (var items in db.ViewListCategory(item.cascade_guid))//第二层 
                      { %> 
                     <ul> 
                          <li> 
                              <span onmousemove="javascript:showhtml('<%= items.cascade_guid.MyRight(22) %>', '<%= item.cascade_guid.MyRight(22) %>', '<%= items.cascade_name %>', '<%= item.cascade_name %>')" style="display: block;"> 
                              <%= items.cascade_name %> 
                              </span> 
                              
                              <div id="<%= items.cascade_guid.MyRight(22) %>show" class="Box" style=" position: absolute; z-index:999999px; display: none;"> 
                              </div> 
                             
                          </li>    
                      </ul> 
                    <%} %> 
                </div> 
第一层的底层public IQueryable<cascade> ViewListParent(string type) 
        { 
            return db.cascade.Where(d => d.cascade_type == type && d.cascade_pguid == "" && d.cascade_isdel == 0); 
        } 
第二层也是差不多。数据也就2000这样
楼上说的很详细

2011年10月10日 14:26
0 0

能否详细说明啊

2011年10月10日 14:06

相关推荐

    迭代法-穿越沙漠问题 迭代法-穿越沙漠问题

    在给定的“迭代法-穿越沙漠问题”中,我们可以理解这是一个基于迭代算法的编程挑战,可能是为了模拟或解决某种涉及到多步骤决策的问题,比如在资源有限的情况下找到穿越沙漠的最短路径。 迭代法的基本思想是通过...

    测试迭代.zip,迭代器、可迭代对象、生成器、生成器表达式的实验代码

    可迭代对象必须实现`__iter__`方法,该方法返回一个迭代器对象。 2. **迭代器**:迭代器是实现了迭代协议的对象,即拥有`__iter__`和`__next__`方法。`__iter__`返回迭代器本身,`__next__`则返回序列的下一个元素...

    迭代器实例

    `std::find_if`接受一个迭代器范围和一个谓词函数,用于查找满足特定条件的第一个元素。例如,我们可以定义一个函数对象(functor)或使用lambda表达式来检查当前元素是否为查询的单词。 下面是一个简单的示例代码...

    艾特金迭代法求非线性方程的一个实根_算法_dog3v4_数学_

    艾特金迭代法通过构造一个局部二次插值多项式,并在其与原函数的交点处进行下一次迭代,以期望更快地逼近实根。 具体步骤如下: 1. 初始化迭代序列x_0, x_1。 2. 计算差分: - δ_n = x_n - x_{n-1} - ρ_n = f_n...

    matlab开发-使用gnewton方法迭代一个变量

    在这个项目中,我们看到的是如何利用MATLAB来实现gnewton方法迭代一个变量,目的是找到与x轴相交的函数值。 首先,我们需要理解gnewton方法的基本原理。假设我们有一个目标函数f(x),我们要找的是使f(x) = 0的x值。...

    关于迭代的方法

    在IT领域,迭代是一个非常重要的概念,尤其在软件开发过程中,它不仅涉及算法的设计,还广泛应用于各种编程语言中数据结构的操作。本文将基于给定的信息,深入探讨迭代方法,特别是针对JSP(JavaServer Pages)环境...

    Jacobi迭代算法_jacobi迭代_Jacobi迭代法_SOR迭代法_Gauss-Seidel迭代法_迭代法_

    - 初始化:选择一个初始解x^{(0)}。 - 迭代公式:对于i=1,2,...,n,计算x_i^{(k+1)} = (1/d_i) * (b_i - Σ_{j≠i} a_{ij} * x_j^{(k)}),其中d_i = 1/a_{ii}。 - 检查收敛性:当解的变化足够小或者达到预设迭代...

    项目实例讨论-一个构架重构项目的迭代实践(全)

    2. **工件产出**:确定每个迭代阶段需要产出的工件,如重构的设计文档、更新后的代码库等。 3. **任务分配**:根据目标和工件产出,细化为具体任务并分配给团队成员。 4. **执行与监控**:执行任务的同时,监控进度...

    c++迭代器失效问题

    例如,一个迭代器指向向量中的某个元素,如果向量被清空,所有迭代器都会失效,即使有其他迭代器副本也是如此。 5. **反向迭代器**:反向迭代器是正向迭代器的逆序版本,同样会受到上述失效规则的影响。特别是在...

    关于Richardson定长迭代与切比雪夫半迭代加速的报告

    假设我们有一个迭代序列 {x_k},其中x_{k+1} = G(x_k),Richardson外推公式可以表示为: x_{k+1} = \frac{1}{4}(x_k + 4G(x_k) - G^2(x_k)) 这个公式中,G^2(x_k) 表示对G函数连续两次应用。Richardson迭代法的...

    一个关于java实现的迭代用法例子,太经典了

    用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: "4 "不能在第三位, "3 "与 "5 "不能相连.

    牛顿迭代法求一元三次方程

    在处理一元三次方程时,牛顿迭代法能够找到所有可能的实根,而不仅仅是其中一个。 一元三次方程一般形式为 \( ax^3 + bx^2 + cx + d = 0 \),其中 \( a \neq 0 \) 是方程的系数。一个三次方程最多有三个实根或复根...

    迭代与递归的区别

    迭代关系式是指如何从前一个迭代变量的值推导出后一个迭代变量值的规则。例如,在计算累加和的场景中,如果当前的迭代变量值是s,下一个迭代变量值可能是s加上序列中的下一个元素。 迭代过程的控制指的是算法的停止...

    迭代学习Simulink仿真

    - 将新输入应用于系统模型,继续下一个迭代周期。 3. **性能分析**:记录每次迭代的系统响应,对比不同迭代的输出,观察误差减小趋势和系统稳定性。 4. **调整参数**:根据仿真结果调整ILC算法的参数,如学习速率...

    牛顿迭代法求一个实根

    这里,\( x_{n+1} \)是下一个迭代值,\( x_n \)是当前迭代值。 4. **判断停止条件**:持续执行上述步骤,直到某个终止条件满足,如连续两次迭代的差小于预设阈值,或达到最大迭代次数。 5. **收敛性分析**:牛顿...

    关于迭代器的Demo

    =`来比较两个迭代器是否指向同一个位置。 5. **迭代器的范围for循环**: - C++11引入的范围for循环简化了迭代过程,如`for (auto& element : container) { /*...*/ }`,这会自动处理迭代器的递增和边界检查。 6. ...

    基于迭代加深A*算法的八数码问题

    总之,"基于迭代加深A*算法的八数码问题"是一个结合了经典问题、高级搜索算法和实际编程挑战的项目。通过理解和实现这个项目,开发者不仅可以深化对A*算法和迭代加深策略的理解,还能提升在C#语言中的问题解决能力。

    一个小小例子让你读懂迭代器模式,

    聚合对象需要提供一个方法来返回一个迭代器实例,供客户端使用。 3. **具体迭代器(Concrete Iterator)**:实现了迭代器接口,知道如何遍历特定聚合对象的元素。它通常会维护一个指向当前元素的指针,以便于下一次...

    牛顿迭代法,牛顿迭代法求根,matlab

    3. **迭代更新**:利用切线的零点作为下一个迭代点,即x1 = x0 - f(x0)/f'(x0)。 4. **重复迭代**:用x1替代x0,继续执行步骤2和3,直到满足停止条件(如达到预设精度或迭代次数)。 MATLAB实现牛顿迭代法通常涉及...

Global site tag (gtag.js) - Google Analytics