Question related to the PHP engine and ArrayBuffers

Aberta
#2 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
10/100
Tipo de issue
Funcionalidade
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
c, php
Domínio
backend

Direção de pesquisa

Esta é uma questão de desempenho ainda sem resposta sobre o engine do PHP, o comportamento do JIT baseado em LLVM, ArrayBuffers e uma possível RFC. Nenhum arquivo, teste ou ponto de entrada é especificado, portanto comece pesquisando a extensão e o contexto dos componentes internos do PHP descritos na issue. A conclusão exigiria uma avaliação de desempenho apoiada por um maintainer e uma proposta de RFC claramente delimitada.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Hi; you don’t know me but I would like to say that it was a sad thing for the PHP community to learn that you moved over to LLVM; but I hope you are doing well. Over to my question:

I learned today some background from the PHP internals and the process leading up to PHP version 7, and also the JIT feature in 7.4:

That PHP’s JIT performance suffers because of extra CPU cache misses when JIT is enabled. Based on this, Dmitri did some great work on optimizing the memory requirements for important data structures in PHP 7.

This reduced the memory requirements of PHP and contributed to a ca 200% performance increase for PHP - mostly attributed to reduced memory bandwidth needs.

Question:
Can an extension like this ever hope to compete in performance, compared to a native op-code based approach to implementing array buffers? If so; I will consider adopting it into an RFC for PHP.

(Also because I am curious, but irrelevant for this extension; but I know you have an opinion: Could potentially re-implementing for example most of the \str* functions as pure PHP - reduce the amount of CPU cache space needed and lead to a faster language in general?)

Linguagem predominante
C
Estrelas
43
Forks
5
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de nikic/buffer

Todas as issues de nikic/buffer

Issues semelhantes

Mais issues de C

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.