Что касается первого вопроса, возможно ли заполнить массив значениями диапазона: на самом деле можно достичь этого с помощью комбинации Range , DiscreteDomain , ContiguousSet и Ints из Гуава :
int[] array = Ints.toArray(
ContiguousSet.create(Range.closed(1, 500), DiscreteDomain.integers()));
И, не совсем то, что упоминается во второй части вопроса, но можно создать набор с элементами диапазона дискретной области:
Set numbersFrom1To500 =
ContiguousSet.create(Range.closed(1, 500), DiscreteDomain.integers());
Результирующий Set
не будет содержать указанные элементы физически, только логически (поэтому его объем памяти будет небольшим ), но может быть повторен (так как это Set
):
for (Integer integer : numbersFrom1To500) {
System.out.println(integer);
}
Профилировщик, такой как JetBrains dotTrace , должен сообщить вам, где находится ваше узкое место ... если вы не видите ничего необычного (например, длинный процесс раз по методу), значит, это не ваше приложение. Это должно быть окружение. Это могло быть, если вы используете Active Directory и вызов Active Directory зависает ... Есть ли вызов веб-службы? Вы используете Team Systems? Существуют ли процессы после сборки?
Мне кажется, что что-то истекает. Вот почему вы так долго ждете.
Почему бы не использовать функцию трассировки ASP.NET. Используйте trace.axd для анализа запросов.
Это может быть полезно:
http://msdn.microsoft.com/en-us/library/ms972204.aspx
http://msdn.microsoft .com / en-us / library / wwh16c6c.aspx
В прошлом я использовал профилировщик производительности ANTS от redgate. Это действительно хорошо, и мне это очень помогло. Я знаю, что не все хотят тратить деньги на такие инструменты, но этот может того стоить. Проверьте это, у них есть бесплатная 14-дневная пробная версия, которую вы можете использовать на этом веб-сайте и выяснить, в чем именно проблема.
http://www.red-gate.com/products/ants_performance_profiler/index.htm
Удачи!
Вы пробовали простую технику включения трассировки страницы, чтобы посмотреть, говорит ли она вам что-нибудь? Первая строка на вашей aspx-странице будет выглядеть так:
<%@ Page Language="C#" Trace="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SilverlightApplication1.Web._Default" %>
когда страница отображается в браузере, весь набор информации также будет добавлен к ее нижней части.
Профилирование и трассировка - хорошие рекомендации.
Если вы используете предложение DateTime.Now.ToString (), Я бы рекомендовал вместо этого использовать класс System.Diagnostics.StopWatch. Он очень прост в использовании, и я считаю его более точным.
using System.Diagnostics;
//...
Stopwatch watch = new Stopwatch();
watch.Start();
// Do your loading work here
watch.Stop();
// You can use watch.ElapsedMilliseconds to get the elapsed time
Запишите время в файл журнала и проверьте.
namespace TracePageLoad
{
public partial class _Default : System.Web.UI.Page
{
string sLogDir = "Your path to write the log";
protected void Page_Load(object sender, EventArgs e)
{
TextWriter objTW = new StreamWriter(sLogDir, true);
objTW.WriteLine(DateTime.Now.ToString());
//Your code
objTW.WriteLine(DateTime.Now.ToString());
objTW.Close();
}
}
}