Комментарии 34
НЛО прилетело и опубликовало эту надпись здесь
Через WebSocket? Если расскажите как — попробую!
-5
Пойдите еще дальше и преобразуйте
var people = [{ name:'Alan Watts', death_date:'November 16, 1973',location:'Chislehurst, England',cause:'Alcohol poisoning'} ,age:58}];
в
var people = [['Alan Watts','November 16, 1973','Chislehurst, England','Alcohol poisoning',58]];
и передайте одно поле с порядком переменных
var people = [{ name:'Alan Watts', death_date:'November 16, 1973',location:'Chislehurst, England',cause:'Alcohol poisoning'} ,age:58}];
в
var people = [['Alan Watts','November 16, 1973','Chislehurst, England','Alcohol poisoning',58]];
и передайте одно поле с порядком переменных
+9
Не понял. Напишите оба варианта, если не трудно.
0
var people = [{ name:'Alan Watts', death_date:'November 16, 1973',location:'Chislehurst, England',cause:'Alcohol poisoning' ,age:58},
{ «name»:«John Barrymore» ,«death_date»:«29 May 1942» ,«location»:«Hollywood, United States» ,«cause»:«Various» ,«age»:60 }];
в
var people = [{ name:'Alan Watts', death_date:'November 16, 1973',location:'Chislehurst, England',cause:'Alcohol poisoning' ,age:58},
[ «John Barrymore» ,«29 May 1942» ,«Hollywood, United States» ,«Various» ,60 ]];
{ «name»:«John Barrymore» ,«death_date»:«29 May 1942» ,«location»:«Hollywood, United States» ,«cause»:«Various» ,«age»:60 }];
в
var people = [{ name:'Alan Watts', death_date:'November 16, 1973',location:'Chislehurst, England',cause:'Alcohol poisoning' ,age:58},
[ «John Barrymore» ,«29 May 1942» ,«Hollywood, United States» ,«Various» ,60 ]];
+3
А, понятно. Так ведь нету выигрыша. По сравнению с записью массивов. Имена столцбов передаются по разу, значения тоже. И там, и там.
?
?
-1
Преобразовать в один проход можно.
0
Хотя нет, признаю свою неправоту. Сейчас попробовал сделать, и Ваш код работает на порядок быстрее.
Сильно удивлен.
Возможно кто-то подскажет почему код работает так медленно?
Сильно удивлен.
Возможно кто-то подскажет почему код работает так медленно?
function unshrink (s) { if (s.constructor != Array) return; for (var i=1, l=s.length; i<l; i++) { var o = {}; for (var j=0, k=s[i].length; j<k; j++) { o[s[0][j]] = s[i][j]; } s[i] = o; } s = s.slice(1); return s; }
0
из-за slice()? Попробуйте в фаербаге включить profile и посмотрите на большом массиве данных, кто тормозит.
0
НЛО прилетело и опубликовало эту надпись здесь
Коллеги, бездумно плюсующие этот комментарий. У меня к вас вопрос.
Где гарантия, что цикл for (in) будет обходить значения в том порядке, в котором они перечислены в JSON представлении? Где в спецификации написано, что гарантируется обход именно в этом порядке?
С представлением в этом комментарии все замечательно, кроме одной детальки — обход значений может происходить в произвольном порядке и значения из последующих записей попадут в другие столбцы.
В остальном все нормально, можете плюсовать дальше…
Где гарантия, что цикл for (in) будет обходить значения в том порядке, в котором они перечислены в JSON представлении? Где в спецификации написано, что гарантируется обход именно в этом порядке?
С представлением в этом комментарии все замечательно, кроме одной детальки — обход значений может происходить в произвольном порядке и значения из последующих записей попадут в другие столбцы.
В остальном все нормально, можете плюсовать дальше…
0
>> NULL ячейки будут представлены строкой «undefined» в JSON представлении записи массивов
[,,,] — массив из 4-х undefined в IE, и из 3-х во всех остальных браузерах. Т.е. не последний элемент можно смело пропускать.
[,,,] — массив из 4-х undefined в IE, и из 3-х во всех остальных браузерах. Т.е. не последний элемент можно смело пропускать.
0
{ name:'Alan Watts', death_date:'November 16, 1973',location:'Chislehurst, England',cause:'Alcohol poisoning'} // ,age:58}
На всякий случай, это не JSON. Это Javascript.
+4
На тот-же случай, выдержка из википедии:
JSON (англ. Javascript Object Notation) — текстовый формат обмена данными, основанный на Javascript и обычно используемый именно с этим языком. (http://ru.wikipedia.org/wiki/JSON)
Ну, а приведённая вами строка соответствует формату json.
JSON (англ. Javascript Object Notation) — текстовый формат обмена данными, основанный на Javascript и обычно используемый именно с этим языком. (http://ru.wikipedia.org/wiki/JSON)
Ну, а приведённая вами строка соответствует формату json.
0
Не соответствует: http://www.json.org/. Кавычки одинарные использовать нельзя.
+4
а кавычки?
0
собственно, после update весь топик можно помечать, как вредный совет и приводить как иллюстрацию правила «преждевременная оптимизация — зло».
+4
Я вот только одного не понимаю. Когда мы выбираем данные из базы данных, то почему мы не выбираем только значения? То есть массив, строки которого — строки из таблицы в базе, столбцы — столбцы. Снабдить его ещё именами столбцов — и всё, никаких преобразований и shrink не надо.
0
возможно, лучше вместо json использовать protobuf от google.
было бы чудесно сравнить производительность Вашего метода с реализацией на Protocol Buffers.
было бы чудесно сравнить производительность Вашего метода с реализацией на Protocol Buffers.
0
JSON хорош тем, что ему в браузере можно сказать eval().
0
это ясно. но для оптимизации, я бы также посмотрел и в сторону Protocol Buffers.
возможно, это уходит за рамки данной статьи, но было бы интересно посмотреть сравнение производительности JSON и Protocol Buffers.
И название статьи получается хорошее: JSON Dataset by Krovosos vs Protocol Buffers by Google :)
возможно, это уходит за рамки данной статьи, но было бы интересно посмотреть сравнение производительности JSON и Protocol Buffers.
И название статьи получается хорошее: JSON Dataset by Krovosos vs Protocol Buffers by Google :)
0
оч. интересно. Видимо, за этим будущее. А gzip лучше ждем из-за особенностей фрейма.
0
Что за программа из второго апдейта?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Оптимизация JSON датасетов (массивов записей)