Вы хотите сравнить хранилище ключей APC с Memcache, верно? Потому что APC также выполняет кеширование кода операции, а это совсем другое.
Что ж, на одной машине кэш-память APC k-v намного быстрее, чем memcache. Memcache обладает большей функциональностью, но предназначен для распределенных сред, в то время как APC работает только на отдельных серверах.
Недавно я провел тестирование, чтобы установить, а затем получить по 1 миллиону ключей в обоих, каждый ключ представлял собой последовательное целое число, а значения были 32-байтовой строкой.
По локальному хосту memcache может получать 12 тыс. Ключей / секунду в одном потоке. APC вернул 90K / секунду. Однако, если вы используете многопоточность или «multi_get» с memcache, это очень близко к производительности APC.
Тест выполнялся на скорости 1 Гб в секунду на slicehost.
Я не уверен, что вы можете это сделать, но что-то похожее будет:
В Ruby 1.8.6:
a = lambda { |my_proc|
puts 'in a'
my_proc.call
}
a.call(lambda { puts "in a's block" })
В Ruby 1.9.1 вы можете иметь параметры блока
a = lambda { |&block|
puts 'in a'
block.call
}
a.call { puts "in a's block" }
Вы можете вызвать блок, который похож на уступку.
a = lambda {|&block| block.call if block}
a.call {print "hello"}
Обратите внимание, что
a.call
не вернет ошибку.