Алгоритм для стабильного 'download-time-remaining' в окне загрузки

Лучший способ диагностировать эти виды ошибок WCF (те, которые действительно не говорят Вам очень) состоит в том, чтобы позволить проследить. В Вашем web.config файле добавьте следующее:

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" 
              switchValue="Information" 
              propagateActivity="true">
        <listeners>
          <add name="ServiceModelTraceListener" 
               type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
               initializeData="wcf-traces.svclog"/>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

можно тогда открыть получающийся файл в утилите SvcTraceViewer.exe, которая прибывает в SDK Платформы.NET (или с Visual Studio). На моей машине это может быть найдено в %PROGRAMFILES %\Microsoft SDKs\Windows\v6.0A\Bin\SvcTraceViewer.exe.

Просто ищут сообщение об ошибке (полужирным красный), и это скажет Вам конкретно, какова Ваша проблема.

11
задан Jonathan Graehl 24 November 2009 в 06:49
поделиться

4 ответа

Мы решили аналогичную проблему следующим образом. Нас не интересовало, насколько быстро происходила загрузка в течение всего времени, а просто примерно то, сколько времени она должна была занять, исходя из недавней активности, но, как вы говорите, не настолько недавней, чтобы цифры могли резко возрасти повсюду.

Причина, по которой нас не интересовали все временные рамки, заключалась в том, что загрузка могла составлять 1M / s в течение получаса, а затем переключаться на 10M / s в течение следующих десяти минут. Эти первые полчаса значительно снизят среднюю скорость, несмотря на то, что вы теперь гудите в довольно быстром темпе.

Мы создали кольцевой буфер с каждой ячейкой, содержащей количество, загруженное за 1-секундный период. . Размер кольцевого буфера составлял 300, что позволяло хранить исторические данные за 5 минут, и каждая ячейка была инициализирована нулем.

14
ответ дан 3 December 2019 в 03:18
поделиться
10
ответ дан 3 December 2019 в 03:18
поделиться

Я предпочитаю использовать среднюю скорость за последние 10 секунд и разделить на нее оставшуюся часть. Деление на текущую скорость до слишком нестабильного при делении на среднее всего прогресса не может справиться с постоянными изменениями скорости (например, начинается другая загрузка).

4
ответ дан 3 December 2019 в 03:18
поделиться

Почему бы не вычислить скорость загрузки как среднее значение за всю загрузку, то есть:

s = f' / elapsed time

Таким образом, со временем она будет сглаживаться.

0
ответ дан 3 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: