PHP e o bebê de milhões de matriz

Imagine que você tenha a seguinte matriz de inteiros:

array(1, 2, 1, 0, 0, 1, 2, 4, 3, 2, [...] );

Os inteiros vão até um milhão de entradas; somente em vez de serem codificados, foram pré-gerados e armazenados em um arquivo formatado em JSON (de aproximadamente 2 MB de tamanho). A ordem desses números inteiros é importante, não posso gerá-los aleatoriamente toda vez porque eles devem ser consistentes e sempre ter os mesmos valores nos mesmos índices.

Se este arquivo for lido novamente no PHP (por exemplo, usandofile_get_contents + json_decode) leva de 700 a 900ms apenas para recuperar o array - "Ok", pensei, "provavelmente é razoável, já quejson_decode tem que analisar cerca de 2 milhões de caracteres, vamos armazenar em cache ". APC armazena em cache em uma entrada que leva cerca de 68MB, provavelmente normal, zvals são grandes.Recuperar, no entanto, esta matriz de volta da APC também leva alguns bons 600ms que ainda está nos meus olhos demais.

Edit: APC faz serializar / desserializar para armazenar e recuperar conteúdo que com uma matriz de milhões de itens é um processo demorado e pesado.

Então as perguntas:

Devo esperar essa latência se eu pretendo carregar um array de um milhão de entradas, não importa o data store ou o método, em PHP? Tanto quanto eu entendo APC armazena o próprio zval, então, teoricamente, recuperá-lo do APC deve ser o mais rápido possível (sem análise, sem conversão, sem acesso ao disco)

Por que a APC é tão lenta para algo aparentemente tão simples?

Existe alguma maneira eficiente de carregar um array de um milhão de entradas inteiramente na memória usando PHP? supondo que o uso de RAM não seja um problema.

Se eu fosse acessar apenas fatias dessa matriz com base em índices (por exemplo, carregando o bloco do índice 15 para o índice 76) e nunca realmente ter a matriz inteira na memória (sim, eu entendo que essa é a maneira sã de fazê-lo, mas eu queria saber todos os lados), qual seria o sistema de armazenamento de dados mais eficiente para a matriz completa? Obviamente não é um RDBM; Estou pensando em redis, mas ficaria feliz em ouvir outras ideias.

questionAnswers(4)

yourAnswerToTheQuestion