nikic / nikic/buffer

Question related to the PHP engine and ArrayBuffers

Open
#2 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
42
Forks
5
PR merge metrics
No merged PRs in 30d

Description

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?)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This is an unanswered performance question about the PHP engine, LLVM-based JIT behavior, ArrayBuffers, and a possible RFC. No files, tests, or entry points are named, so begin by researching the extension and PHP internals context described in the issue. Done would require a maintainer-supported performance assessment and a clearly scoped RFC proposal.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, php
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
10/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.