gpt4 book ai didi

php - HipHop PHP 编译器的 C++ 输出是什么样的?

转载 作者:可可西里 更新时间:2023-10-31 22:16:44 26 4
gpt4 key购买 nike

它是否干净到可以丢弃 PHP 并手动优化 C++ 代码?

最佳答案

简短回答:

因为我花了一些时间让 HipHop 发挥作用,所以我决定在这里分享我的结果,这样我就不会觉得完全是在浪费时间。

这是我的 PHP 输入:

<?class test { function loop() {  for($i=0; $i<10; ++$i) {    echo("i = $i\n");  } }}$t = new test();$t->loop();?>

这是 C++ 输出...

#include <php/hello.h>#include <cpp/ext/ext.h>namespace HPHP {////////////////////////////////////////////////////////////////////////////////* preface starts *//* preface finishes *//* SRC: hello.php line 3 */Variant c_test::os_get(const char *s, int64 hash) {  return c_ObjectData::os_get(s, hash);}Variant &c_test::os_lval(const char *s, int64 hash) {  return c_ObjectData::os_lval(s, hash);}void c_test::o_get(ArrayElementVec &props) const {  c_ObjectData::o_get(props);}bool c_test::o_exists(CStrRef s, int64 hash) const {  return c_ObjectData::o_exists(s, hash);}Variant c_test::o_get(CStrRef s, int64 hash) {  return c_ObjectData::o_get(s, hash);}Variant c_test::o_set(CStrRef s, int64 hash, CVarRef v,bool forInit /* = false */) {  return c_ObjectData::o_set(s, hash, v, forInit);}Variant &c_test::o_lval(CStrRef s, int64 hash) {  return c_ObjectData::o_lval(s, hash);}Variant c_test::os_constant(const char *s) {  return c_ObjectData::os_constant(s);}IMPLEMENT_CLASS(test)ObjectData *c_test::cloneImpl() {  c_test *obj = NEW(c_test)();  cloneSet(obj);  return obj;}void c_test::cloneSet(c_test *clone) {  ObjectData::cloneSet(clone);}Variant c_test::o_invoke(const char *s, CArrRef params, int64 hash, bool fatal) {  if (hash < 0) hash = hash_string_i(s);  switch (hash & 1) {    case 1:      HASH_GUARD(0x0EA59CD1566F5709LL, loop) {        return (t_loop(), null);      }      break;    default:      break;  }  return c_ObjectData::o_invoke(s, params, hash, fatal);}Variant c_test::o_invoke_few_args(const char *s, int64 hash, int count, CVarRef a0, CVarRef a1, CVarRef a2, CVarRef a3, CVarRef a4, CVarRef a5) {  if (hash < 0) hash = hash_string_i(s);  switch (hash & 1) {    case 1:      HASH_GUARD(0x0EA59CD1566F5709LL, loop) {        return (t_loop(), null);      }      break;    default:      break;  }  return c_ObjectData::o_invoke_few_args(s, hash, count, a0, a1, a2, a3, a4, a5);}Variant c_test::os_invoke(const char *c, const char *s, CArrRef params, int64 hash, bool fatal) {  return c_ObjectData::os_invoke(c, s, params, hash, fatal);}Variant cw_test$os_get(const char *s) {  return c_test::os_get(s, -1);}Variant &cw_test$os_lval(const char *s) {  return c_test::os_lval(s, -1);}Variant cw_test$os_constant(const char *s) {  return c_test::os_constant(s);}Variant cw_test$os_invoke(const char *c, const char *s, CArrRef params, bool fatal /* = true */) {  return c_test::os_invoke(c, s, params, -1, fatal);}void c_test::init() {}/* SRC: hello.php line 4 */void c_test::t_loop() {  INSTANCE_METHOD_INJECTION(test, test::loop);  int64 v_i = 0;  {    LOOP_COUNTER(1);    for ((v_i = 0LL); less(v_i, 10LL); ++v_i) {      LOOP_COUNTER_CHECK(1);      {        echo((LINE(6,concat3("i = ", toString(v_i), "\n"))));      }    }  }} /* function */Object co_test(CArrRef params, bool init /* = true */) {  return Object(p_test(NEW(c_test)())->dynCreate(params, init));}Variant pm_php$hello_php(bool incOnce /* = false */, LVariableTable* variables /* = NULL */) {  FUNCTION_INJECTION(run_init::hello.php);  {    DECLARE_GLOBAL_VARIABLES(g);    bool &alreadyRun = g->run_pm_php$hello_php;    if (alreadyRun) { if (incOnce) return true;}    else alreadyRun = true;    if (!variables) variables = g;  }  DECLARE_GLOBAL_VARIABLES(g);  LVariableTable *gVariables __attribute__((__unused__)) = get_variable_table();  Variant &v_t __attribute__((__unused__)) = (variables != gVariables) ? variables->get("t") : g->GV(t);  (v_t = ((Object)(LINE(11,p_test(p_test(NEWOBJ(c_test)())->create())))));  LINE(12,v_t.o_invoke_few_args("loop", 0x0EA59CD1566F5709LL, 0));  return true;} /* function *////////////////////////////////////////////////////////////////////////////////}

呸!我花了好几秒钟才找到循环...

关于php - HipHop PHP 编译器的 C++ 输出是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com