我在c ++中做了一个简单的程序来比较两种方法之间的性能 – 传递值和传递参考。 其实通过价值performance比通过参考更好。 结论应该是传递值需要更less的时钟周期(指令) 如果有人能够详细解释为什么按价值传递需要更less的时钟周期,我会很高兴。 #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; void function(int *ptr); void function2(int val); int main() { int nmbr = 5; clock_t start, stop; start = clock(); for (long i = 0; i < 1000000000; i++) { function(&nmbr); //function2(nmbr); } stop = clock(); cout << "time: " […]
可能重复: Java是“通过引用”吗? 我今天发现了一种不寻常的Java方法: private void addShortenedName(ArrayList<String> voiceSetList, String vsName) { if (null == vsName) vsName = ""; else vsName = vsName.trim(); String shortenedVoiceSetName = vsName.substring(0, Math.min(8, vsName.length())); //SCR10638 – Prevent export of empty rows. if (shortenedVoiceSetName.length() > 0) { if (!voiceSetList.contains("#" + shortenedVoiceSetName)) voiceSetList.add("#" + shortenedVoiceSetName); } } 根据我所读到的关于Java传递variables,复杂对象的行为的一切,这段代码应该什么也不做。 所以呃…我在这里错过了什么? 有没有一些微妙的东西丢在我身上,还是这个代码属于dailywtf?
当你传递一个集合像列表,数组到Python中的另一个函数,它是否复制它,或者它只是一个指针?
可能重复: 通过引用的调用时间已被弃用 虽然它可能logging在互联网上的某个地方,但是我找不到解决我的问题的办法。 自PHP 5.4更新以来,传递引用已被删除。 现在我遇到了这部分代码的问题,我希望有人能看到我正在尝试使用它,以便他们可以帮助我解决scheme来克服传递引用问题。 下面是有问题的代码: public function trigger_hooks( $command, &$client, $input ) { if( isset( $this->hooks[$command] ) ) { foreach( $this->hooks[$command] as $func ) { PS3socket::debug( 'Triggering Hook \'' . $func . '\' for \'' . $command . '\'' ); $continue = call_user_func( $func, &$this, &$client, $input ); if( $continue === FALSE ) […]
目前,我正在阅读很多有关软件工程,软件devise,devise模式等方面的内容。从完全不同的背景来看,这些对我来说都是新奇的东西,所以如果我不使用正确的技术术语,请耐心等待描述某些方面;-) 在大多数情况下,我最终都使用了引用类 (在R中是一种OOP方法),因为面向对象似乎是我正在做的很多事情的正确select。 现在,我想知道是否有人在R中实现MVC (Model View Controller;也称为MVP :Model View Presenter)模式方面有一些很好的build议或经验,最好使用Reference Classes。 我也会对其他“标准”devise模式(如观察者 , 黑板等)的信息非常感兴趣,但是我不想把这个问题做得太宽泛。 我想最酷的是看到一些最小的示例代码,但任何指针,“架构”,图表或任何其他的想法也将不胜感激! 对于那些对类似的东西感兴趣的人,我可以推荐以下书籍: 语用程序员 devise模式 更新2012-03-12 我最终想出了一个我对MVC解释的小例子(这可能不完全正确;-))。 包依赖 require("digest") 类定义观察者 setRefClass( "Observer", fields=list( .X="environment" ), methods=list( notify=function(uid, …) { message(paste("Notifying subscribers of model uid: ", uid, sep="")) temp <- get(uid, .self$.X) if (length(temp$subscribers)) { # Call method updateView() for each subscriber reference […]
在PHP中,函数参数可以通过在函数声明中的参数前加一个&符号来传递,如下所示: function foo(&$bar) { // … } 现在,我意识到这不是为了提高性能而devise的,而是允许函数改变通常超出范围的variables。 相反,PHP似乎使用Copy On Write来避免复制对象(也可能是数组),直到它们被更改。 所以,对于不改变参数的函数,效果应该和通过引用传递它们一样。 但是,我想知道Copy On Write逻辑是否可能在通过引用时被短路,是否会对性能产生影响。 ETA:可以肯定的是,我认为这不是更快,我清楚这不是什么参考。 所以我觉得我自己的猜测是相当不错的,我只是在寻找一个真正知道底线下发生的事情的人的答案。 在PHP开发的五年中,我一直发现很难从阅读源代码中获取关于PHP内部的高质量信息。
我想通过引用传递我的Swift Array account.chats到chatsViewController.chats (所以当我添加一个聊天account.chats , chatsViewController.chats仍然指向account.chats )。 也就是说,我不希望Swift在account.chats的长度发生变化时将两个数组分开。
可能重复: 如何在JavaScript函数调用中预先设置参数? (部分function应用) 我需要能够通过给定的一组parameter passing一个函数的引用 。 这里是一个没有parameter passing参考的例子: var f = function () { //Some logic here… }; var fr = f; //Here I am passing a reference to function 'f', without parameters fr(); //the 'f' function is invoked, without parameters 现在我需要做的是传递相同的f函数,但是这次我需要传递参数给引用。 现在,我可以用一个匿名函数来执行它,并用新创build的函数中的参数调用f函数,如下所示: var f = function () { //Some logic here… }; var fr […]
在什么情况下我应该喜欢通过参考? 传递的价值?
下面是C编程只是常见问题的一个片段。 这是不是错误的数组不能通过引用传递? 八.6:如何通过值传递一个数组到一个函数? 答案:可以通过在被调用的函数中声明带有方括号( [和] )的数组名来在数组中传递数组。 调用该函数时,只需将该数组的地址(即数组的名称)传递给被调用的函数。 例如,以下程序通过值将数组x[]传递给名为byval_func()的函数: int[]参数告诉编译器byval_func()函数将接受一个参数 – 一个整数数组。 当byval_func()函数时,将数组的地址传递给byval_func() : byval_func(x); 因为数组是按值传递的,所以数组的一个精确的拷贝被放在堆栈上。 被调用的函数然后接收这个数组的拷贝并且可以打印它。 因为传递给byval_func()的数组是原始数组的副本,所以在byval_func()函数内修改数组对原始数组没有影响。