আমি এমন একটি প্যাকেজ বজায় রাখি যা বার বার কল করার উপর নির্ভর করে deparse(control = c("keepNA", "keepInteger"))। controlসর্বদা একই থাকে এবং প্রকাশটি বিভিন্ন রকম হয়। deparse()বার বার একই বিকল্পগুলির সাথে একই বিকল্পগুলির ব্যাখ্যা করার জন্য অনেক সময় ব্যয় করে .deparseOpts()।
microbenchmark::microbenchmark(
a = deparse(identity, control = c("keepNA", "keepInteger")),
b = .deparseOpts(c("keepNA", "keepInteger"))
)
# Unit: microseconds
# expr min lq mean median uq max neval
# a 7.2 7.4 8.020 7.5 7.6 55.1 100
# b 3.0 3.2 3.387 3.4 3.5 6.0 100
কিছু সিস্টেমে রিডানড্যান্ট .deparseOpts()কলগুলি বেশিরভাগ রানটাইমের বেশিরভাগ সময় নেয় deparse()( এখানে শিখা গ্রাফ )।
আমি সত্যিই কেবল .deparseOpts()একবার কল করতে এবং তারপরে সংখ্যার কোডটি সরবরাহ করতে চাই deparse(), তবে .Internal()সি কোডটি সরাসরি কল করা বা আহ্বান করা ছাড়া এটি অসম্ভব বলে মনে হয়, যার কোনটিই প্যাকেজ বিকাশের দিক থেকে অনুকূল নয়।
deparse
# function (expr, width.cutoff = 60L, backtick = mode(expr) %in%
# c("call", "expression", "(", "function"),
# control = c("keepNA", "keepInteger", "niceNames",
# "showAttributes"), nlines = -1L)
# .Internal(deparse(expr, width.cutoff, backtick, .deparseOpts(control),
# nlines))
# <bytecode: 0x0000000006ac27b8>
# <environment: namespace:base>
কোন সুবিধাজনক কাজ আছে?