Для разработчиков VB.NET:
Добавьте следующую строку в файл Glabal.asax.vb, в конце метода Application_Start ()
Database.SetInitializer(Of ApplicationDbContext)(Nothing)
Измените ApplicationDbContext на ваш конкретный контекст Db.
Для почему бы не объединения их вместе - использование сокращения, чтобы сделать, что это прилагает все усилия и рубин для обеспечения связующего звена/значения добавляет с результатами CUT? можно выполнить сценарии оболочки путем помещения их в обратные галочки как это:
puts `cut somefile > foo.fil`
# process each line of the output from cut
f = File.new("foo.fil")
f.each{|line|
}
Этот вопрос напоминает мне о Широком проекте Средства поиска Tim Bray. Самым быстрым путем он мог считать файл журнала Apache с помощью Ruby и фигуры, какие статьи были выбраны, больше всего был с этим сценарием:
counts = {}
counts.default = 0
ARGF.each_line do |line|
if line =~ %r{GET /ongoing/When/\d\d\dx/(\d\d\d\d/\d\d/\d\d/[^ .]+) }
counts[$1] += 1
end
end
keys_by_count = counts.keys.sort { |a, b| counts[b] <=> counts[a] }
keys_by_count[0 .. 9].each do |key|
puts "#{counts[key]}: #{key}"
end
Этому коду потребовались 7½ секунд ЦП, 13½ секунд протекли, для обработки миллиона и записей изменения, приблизительно одна четверть концерта, на прошлогоднем PowerBook на 1.67 ГГц.
Я предполагаю, что Ваши реализации Ruby читают весь файл до обработки. Сокращение Unix работает путем чтения вещей один байт за один раз и сразу дампа к выходному файлу. Существует, конечно, некоторая включенная буферизация, но не больше, чем некоторые КБ.
Мое предложение: попытайтесь делать обработку, оперативную с как можно меньшей подкачкой страниц или отслеживанием в обратном порядке.
Я сомневаюсь, что проблема состоит в том, что рубин читает целый файл в памяти. Посмотрите на использование памяти и использование диска при выполнении команды для проверки.
Я предположил бы, что главная причина состоит в том, потому что сокращенный записан в C и только делает одну вещь, таким образом, это имеет, вероятно, быть скомпилированным вниз в очень металлическое. Это, вероятно, не делает намного больше, чем вызов системных вызовов.
Однако рубиновая версия делает много вещей сразу. Вызов метода намного медленнее в рубине, чем вызовы функции C.
Помните старость и молодежь удара предательства и навык в Unix: http://ridiculousfish.com/blog/archives/2006/05/30/old-age-and-treachery/