diff --git a/paddle/framework/grad_op_builder.cc b/paddle/framework/grad_op_builder.cc
index 27f37d99232fd56593cd2decefa466d9af620e9b..5f84eb8c15df3045a79544539e1e53d81b3145af 100644
--- a/paddle/framework/grad_op_builder.cc
+++ b/paddle/framework/grad_op_builder.cc
@@ -33,12 +33,12 @@ static void TransOpArg(const OperatorBase* src_op, OperatorBase* dst_op,
 
   auto& dst_inout =
       dst_type == OpArgType::IN ? dst_op->inputs_ : dst_op->outputs_;
-  const OpProto& proto = OpRegistry::protos().at(src_op->type_);
+  const OpProto& proto = OpProtos().at(src_op->type_);
   const auto& src_arg_list =
       src_type == OpArgType::IN ? proto.inputs() : proto.outputs();
 
   for (const auto& arg : src_arg_list) {
-    std::string src_name = arg.name();
+    const std::string& src_name = arg.name();
     std::string dst_name = is_grad ? GradVarName(src_name) : src_name;
     for (auto& var_name : src_inout.at(src_name)) {
       std::string s = is_grad ? GradVarName(var_name)
diff --git a/paddle/framework/pybind.cc b/paddle/framework/pybind.cc
index e606751e1c3cac35ab05ceda17b1f0c3d67a39f4..173a701fa6f6b0d8e34b38ac369844d065f78319 100644
--- a/paddle/framework/pybind.cc
+++ b/paddle/framework/pybind.cc
@@ -154,7 +154,7 @@ All parameter, weight, gradient are variables in Paddle.
   //! @note: Be careful! PyBind will return std::string as an unicode, not
   //! Python str. If you want a str object, you should cast them in Python.
   m.def("get_all_op_protos", []() -> std::vector<py::bytes> {
-    auto &protos = OpRegistry::protos();
+    auto &protos = OpProtos();
     std::vector<py::bytes> ret_values;
     for (auto it = protos.begin(); it != protos.end(); ++it) {
       PADDLE_ENFORCE(it->second.IsInitialized(),