максимальный размер для XML-файлов

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

> .Internal(inspect(df))
@7fa48059fe68 19 VECSXP g0c3 [OBJ,NAM(3),ATT] (len=3, tl=0)
  @7fa483d1ba58 14 REALSXP g0c3 [NAM(3)] (len=3, tl=0) 1,2,3
  @7fa4805a0ea8 16 STRSXP g0c3 [NAM(3)] (len=3, tl=0)
    @7fa4829d5898 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Joe"
    @7fa4829d5828 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "John"
    @7fa4829d57b8 09 CHARSXP g0c1 [gp=0x60,ATT] [ASCII] [cached] "Jane"
  @7fa4805a0e08 16 STRSXP g0c3 [NAM(3)] (len=3, tl=0)
    @7fa4829d5588 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Brown"
    @7fa4829d5518 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Black"
    @7fa4829d54a8 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Boss"
ATTRIB:
  @7fa4869050d0 02 LISTSXP g0c0 [] 
    TAG: @7fa47b0c2700 01 SYMSXP g1c0 [MARK,NAM(3),LCK,gp=0x4000] "names" (has value)
    @7fa48059fd78 16 STRSXP g0c3 [NAM(3)] (len=3, tl=0)
      @7fa47e05d668 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "id"
      @7fa47e3d08a0 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "fname"
      @7fa4829d55f8 09 CHARSXP g0c1 [gp=0x61] [ASCII] [cached] "lname"
    TAG: @7fa47b0c2bd0 01 SYMSXP g1c0 [MARK,NAM(3),LCK,gp=0x4000] "class" (has value)
    @7fa47bc3e440 16 STRSXP g1c1 [MARK,NAM(3)] (len=1, tl=0)
      @7fa47b1b6308 09 CHARSXP g1c2 [MARK,gp=0x61,ATT] [ASCII] [cached] "data.frame"
    TAG: @7fa47b0c24d0 01 SYMSXP g1c0 [MARK,NAM(3),LCK,gp=0x4000] "row.names" (has value)
    @7fa483ba7f78 13 INTSXP g0c1 [NAM(3)] (len=2, tl=0) -2147483648,-3

, поэтому указатель на df равен @7fa48059fe68. Если вам нужен только указатель, вы можете извлечь его:

getPointer <- function(x) { 
  lines <- capture.output(.Internal(inspect(x)))
  sub(" .*", "", lines[1])
}

и затем

> getPointer(df)
[1] "@7fa48059fe68"

Имейте в виду, что функция getPointer может изменить свой аргумент, так как она смотрит на вещи что ты не должен видеть.

5
задан rptwsthi 24 February 2012 в 07:15
поделиться

6 ответов

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

Пересечение узлов XML или использование XPath могут быть собакой.

19
ответ дан 18 December 2019 в 05:50
поделиться

Это может быть не вещью, которую Вы хотите услышать, но... Если Вы думаете о размере своих XML-файлов, возможности - Вы, должен использовать базу данных вместо файлов (даже если они не плоские файлы, но структурированный как XML). Базы данных высоко оптимизированы для эффективного устройства хранения данных огромных масс данных. Лучшие алгоритмы для получения данных находятся в кодовой базе баз данных.

7
ответ дан 18 December 2019 в 05:50
поделиться

Я думаю, что это зависит от контекста, откуда файл прибывает из сгенерированного, что Вы собираетесь сделать с ним, пропускная способность какого-либо соединения, через которое это должно перейти, системный размер RAM и т.д.?

каков Ваш контекст?

0
ответ дан 18 December 2019 в 05:50
поделиться

Нет никого. Существуют максимальные размеры для файлов, которые зависят от файловой системы, которую Вы используете, все же.

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

Я не думаю, что Вы должны иметь эмпирическое правило для максимального размера для данных, быть этим XML или что-либо еще. Если необходимо сохранить несколько гигабайтов данных, то Вы храните те данные. То, что имеет значение, - то, что API Вы используете для обработки тех данных. Однако XML не может быть Вашим лучшим выбором, если Ваш набор данных является очень большим. В тех случаях реляционная база данных или база данных XML будут, вероятно, работать лучше, чем единственный XML-файл.

0
ответ дан 18 December 2019 в 05:50
поделиться

Даже при том, что не все синтаксические анализаторы читают целый файл в память при реальной необходимости в эмпирическом правиле, я сказал бы не больше, чем половина доступного поршня. Что-либо большее, вероятно, будет слишком медленным :)

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

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