2016-08-05 2 views
2

В функции Azure вы можете использовать триггер blob. Этот триггер может быть bound to a variety of data structures:Какая структура данных C# должна содержать содержимое blob для оптимальной линейной обработки?

  • TextReader (вход только)
  • поток
  • ICloudBlob
  • CloudBlockBlob
  • CloudPageBlob

При работе с журналом, т.е. данные данных, которые вы хотите обработать каждая строка, какая структура должна использоваться для минимизации времени вычисления и использования памяти?


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

public static void insertBlob([BlobTrigger] TextReader logBlob, TraceWriter log) 
     { 
      string[] text = logBlob.ReadToEnd().Split('\n'); 
      // Do some stuff 
      log.Info(text.Count().ToString()); 
} 
+0

Из моего опыта, нет способа получить строки, отличные от чтения до конца. Если вы хотите свести к минимуму время работы компьютера и использование памяти, возможно, вы можете попробовать очередь или documentDB. –

+0

@ Jambor-MSFT да все строки должны быть прочитаны, и пока они разделены табуляцией, их нужно обработать, чтобы они могли перейти в очередь или docdb. Я пытаюсь создать эффективную функцию Azure для этого. Вопрос заключается в том, эффективен ли какой-либо из типов объектов, который может связывать вход blob для этого варианта использования, чем другие. –

ответ

3

С точки зрения производительности использование потока было бы лучше, поскольку это уменьшило бы давление памяти/время загрузки.

С точки зрения алгоритмического подхода вы не будете намного лучше, чем просто хранить буфер и обрабатывать линию, когда увидите символ '\n'. Если вы не слишком беспокоитесь о производительности и т. Д., Я могу использовать то, что у вас есть, потому что это довольно просто. В любом случае функции будут горизонтально масштабироваться.

 Смежные вопросы

  • Нет связанных вопросов^_^