Я присоединяюсь к этому очень поздно, но нашел что-то более интересное.
Таким образом, мы можем использовать здесь Skip
и Take
для лучшей производительности.
public static class MyExtensions
{
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> items, int maxItems)
{
return items.Select((item, index) => new { item, index })
.GroupBy(x => x.index / maxItems)
.Select(g => g.Select(x => x.item));
}
public static IEnumerable<T> Batch2<T>(this IEnumerable<T> items, int skip, int take)
{
return items.Skip(skip).Take(take);
}
}
Далее я проверил 100000 записей. Зацикливание занимает больше времени в случае Batch
Code of console application.
static void Main(string[] args)
{
List<string> Ids = GetData("First");
List<string> Ids2 = GetData("tsriF");
Stopwatch FirstWatch = new Stopwatch();
FirstWatch.Start();
foreach (var batch in Ids2.Batch(5000))
{
// Console.WriteLine("Batch Ouput:= " + string.Join(",", batch));
}
FirstWatch.Stop();
Console.WriteLine("Done Processing time taken:= "+ FirstWatch.Elapsed.ToString());
Stopwatch Second = new Stopwatch();
Second.Start();
int Length = Ids2.Count;
int StartIndex = 0;
int BatchSize = 5000;
while (Length > 0)
{
var SecBatch = Ids2.Batch2(StartIndex, BatchSize);
// Console.WriteLine("Second Batch Ouput:= " + string.Join(",", SecBatch));
Length = Length - BatchSize;
StartIndex += BatchSize;
}
Second.Stop();
Console.WriteLine("Done Processing time taken Second:= " + Second.Elapsed.ToString());
Console.ReadKey();
}
static List<string> GetData(string name)
{
List<string> Data = new List<string>();
for (int i = 0; i < 100000; i++)
{
Data.Add(string.Format("{0} {1}", name, i.ToString()));
}
return Data;
}
Записанное время Это как.
Сначала - 00: 00: 00.0708, 00: 00: 00.0660
Второе (выберите и пропустите) - 00: 00: 00.0008, 00: 00: 00.0008
Я думаю, что вы не запускаете свой derver server
в определенном порту, который вы используете. вам нужно запустить сервер, используя команду ниже на localhost с портом по умолчанию 1527
startNetworkServer -h 0.0.0.0
, если вы хотите изменить порт, который вы можете использовать ниже:
startNetworkServer -p 3301 // new port number
для [ссылка]
http://www.vogella.com/tutorials/ApacheDerby/article.html
может возникнуть эта ошибка из-за следующих причин:
1) Брандмауэр не разрешен для комбинации хост-портов
2) Клиент и сервер, оба или оба из них не находятся в сети.
3) Сервер работает, но не прослушивает порт, клиент пытается подключиться.
4) Сервер не запущен.
5) Неверный протокол в Строка подключения