Где APC хранит свой код операции и кэш пользовательской переменной?

Используйте BitConverter, если Вы хотите избежать небезопасного кода.

float InvSqrt(float x)
{
    float xhalf = 0.5f * x;
    int i = BitConverter.ToInt32(BitConverter.GetBytes(x), 0);
    i = 0x5f3759df - (i >> 1);
    x = BitConverter.ToSingle(BitConverter.GetBytes(i), 0);
    x = x * (1.5f - xhalf * x * x);
    return x;
}

Иначе, код C# является точно тем же как кодом C, который Вы дали, за исключением того, что метод должен быть отмечен как небезопасный:

unsafe float InvSqrt(float x) { ... }

9
задан 13 July 2009 в 15:10
поделиться

2 ответа

APC использует разделяемую память для хранения своего кэша кодов операций. В случае mod_php эта память распределяется между всеми процессами Apache. Таким образом, кэш размером 30 МБ занимает всего 30 МБ, даже если существует 5 процессов Apache.

Однако при использовании mod_php каждый процесс Apache тратит много ресурсов, поскольку каждый процесс содержит интерпретатор PHP. Таким образом, когда Apache обслуживает статический контент (html, css, js, файлы изображений и т. Д.), Он использует процесс с загруженным полным интерпретатором PHP. Чтобы обойти это, некоторые люди используют FastCGI через mod_fastcgi или mod_fcgi. Использование кэша кодов операций с FastCGI становится немного сложнее.

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

12
ответ дан 4 December 2019 в 19:35
поделиться

Помимо кеширования кодов операций, APC также предоставляет разделяемую память. Это убедительно свидетельствует о том, что у него есть собственная внутренняя система разделяемой памяти, аналогичная memcached.

0
ответ дан 4 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

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