# Some places, some rules

In my last post, I talked about using In place computation to limit memory usage of your calculation. I actually did not had the time to mention some important rules and limitations on this mechanism.

You would be surprised but Matlab actually does not advertise the “In place system” much. Indeed, I couldn’t find these rules in the help, which is very unusual for Matlab. I don’t think “In place computation” is mentioned anywhere. I guess they don’t want you to write code that is too extensively tweaked to boost memory usage as memory management can change in new releases of Matlab. Still a semi-official documentation was done by Loren on her blog.

The most important rule is that the In-place calculation must be done within a function. If you actually use a subfunction for the In-place calculation, this one must be called from within a function. In other words, using the command line to do In place computation AND just a script in a M-file won’t work as well. These things MUST happen within a function. This is required so that Matlab can properly interpret your code and activate the In place calculation. Most Matlab functions Built-in should be able to work with In-place computation. but still some might not. It is impossible to tell as Mathworks does not publish an updated list of working functions.

Let’s look at the usage of In-place with subfunction :

```function TestAll

x=rand(10000,10000);

x=testNoPlace(x);
y=testNoPlace(x);
x=testPlace(x);
z=testPlace(x);

function y=testNoPlace(x)
y=2*x;

function x=testPlace(x)
x=2*x;
```

This function, will compare 2 functions, TestNoPlace and TestPlace. TestPlace is meant to work in place, the output is sent to x, the same variable as the input. If you start TestAll while the profiler is on. You will see that x=testPlace(x) is about 2 times faster than all other calls. The line z=testPlace(x) is interesting. Matlab is smart enough not to modify x in this case, even if this function is written as “In place”. The time spent on this line is exactly the same as on all other calls of TestNoPlace. Please note that I wrote the In-Place calls from within a function (here TestAll).

### 16 Responses to Some places, some rules

1. Thierry says:

but it’s not clear if x has been incremented on the last line ….
actually, it just make a “copy on write”. The interesting here, is that Matlab understood that he could skip the “copy on write” at third line.
we could also say that Matlab is not that impressive because he did not understood that he could also skip it at first line…

• Jerome says:

x doesn’t change on the last line.

I suppose Matlab could do it but I am sure it’s much more complicated in the last case as it needs to understand the code at a much higher level.

2. Jessie says:

Hi, I used profiler to check and turn out line 4 run slowest:
– Line 1: 0.53s
– Line 2: 0.255s
– Line 3: 0.110s
– Line 4: 1.201s (z=testPlace(x))

I am using Matlab R2014b. Do you have any idea why?
Thanks

• Jerome says:

Hi jessie,

Yes, it is different than what I had. Clearly the Line 3 is slower than all other calls in your runs as would be expected but the line 4 is much slower than what I found. Maybe your computer was slightly more busy during that execution. Have you tried to average many calls? Sometimes, it helps to better evaluate bottle-necks.

• Jessie says:

Yes, you are right! I clear my work space and try several times, turn out the run time for line 4 is similar to line 3. I just came across your website and has spent my whole morning gone through how to optimize your code. I have used Matlab for almost a year and this is the first time I know about profiler, shame on me lol. Thank you very much for such helpful information!

3. [url=http://www.bagkakaku.com/vuitton_bag/2/N41100.html]ルイヴィトン 財布真心込めて最高 レベルのスーパーコピールイヴィトン偽物ブランド品をお届けしています。安全税関対策+ 素早い配送+随時の在庫補給+丁寧な対応+スーパーコピー販売業界最低価格に挑戦 ！当店は業界最高品質に挑戦!全商品はプロの目にも分からないルイヴィトン 財布スーパーコピーです。[/url]

4. [url=http://www.eevance.com/News/02a44259755d38e6.html]コンスタンチンchaykinコンプトゥスの復活祭の時計は、あなたはそれを推測し、東方正教会の復活祭の感動的な日付を識別する顕著な挑戦に取り組むために設計されました。 パネライスーパーコピー このように、なぜ日付を計算するのが非常に難しいですか？さて、決定要因を含むので、月のサイクルは、太陽のサイクルは、エパクト、太陽の補正とより多く。chaykinのこれらの要因の全てを使用して計算をするために彼自身の方法を作成する方法を学びました、そして、彼だけにクロックを教えるように東方正教会の復活祭の日付を計算する。私たちはすぐにリストが無数の他の機能の中で、これはこの顕著な構造の目玉、大理石、真鍮、シルバー、鋼、ジュラルミン、ガラス、金、ラピスラズリ、とより多くから作られます。[/url]

5. [url=http://www.bestevance.com/rolex/explorer/index.htm]およそ1年前、私は私のマーク・カーソンkaラ・スポーツ腕時計はどうなるのだろう、ダイヤルと手を設計したが、特定の思想は当時のストラップに与えられました。私は、バーゼル2015年から帰ったとき、私は座った一つのゴールの設計は、高セキュリティストラップシステムを利用することができたのは、曲がった金属片の「私のマーク・カーソンkaラの場合にnatoストラップのより多くの保安を提供するツールと特徴的なマッチョの観察を提供する。[/url]

6. [url=http://www.bagkakaku.com/vuitton_bag/2/N41118.html]スーパーコピーロレックス時計販売 はレプリカロレックス時計通販専門店です . 0.701167888 ロレックスコピー時計の私はパテックロレックスコピーは通常パテック時計は非常にエキサイティングなまたは十分に近代的ではないと感じ、古典的な時計愛好家のためにここにスイートスポットをヒットだと思います . ロレックス工場は生産ラインを設けないで、彼らはベテラン職人に知らせて、彼らの手が完成のに行くのは一件一件の芸術品で、その上ずっと更にの挑戦が蓿の彼らを待っている難度があります。スーパーコピー時計. デイトジャストコピー時計 :[/url]

7. [url=http://www.brandiwc.com/brand-super-14-copy-0.html]一部の人々は、単にダイヤルが好きでありませんでした。それはそうと、社内の7日の自動運動によるiwcのポルトガルうまくバランスの古典的な観察にいくつかの要素を加えます。しかし、年間カレンダーiwcのポルトガルに追加されたことの一部は幸せの象徴です。単にダイヤルを逆さにし、あなたがにこにこした顔の1つの地獄を得ます、目と口として、幸せな一年のカレンダーの窓としての下位ダイヤルを備えています。今となっては見ますか？あなたが悪い日を持っているならば、あなたはちょうどさかさまにこの時計を着用することができます。[/url]

8. [url=http://www.newkakaku.com/cdq1.htm]多分、それlum-tecプッシャーのブライトリングのような洗練された技術を使用します。を見るために、ここを読む方法を使用して作成するブライトリング磁石の接触の密売人にそのアベンジャーシーウルフクロノグラフ腕時計。私は、この概念は、内部のリングを回転させるはずのクラウンの設計に変換することができるかどうかわかっていません、しかし、それは彼らのために良いスタートであるかもしれません。もう一つのアプローチは、ヘビーデューティのガスケットのシステムの1つの地獄を使うことです。この時計の開発として、我々は必然的にlum-tecの賢い解決のより良い考えを得ます。[/url]

9. [url=http://www.eevance.com/tokei/hermes/index.html]具体的には、業界、私たちも観察して西部地域に贅沢な表の検索の伸びが目立つ。特に、ブランドの認知度で最も急速に成長し、毎年8 . 4％のスピードで増加（比べ東部地区は4 . 8％）。確かに、数年前まで通り上海や北京など大都市東部のように、贅沢なブランドに殺到して西部間近表。[/url]

10. [url=http://www.msnbrand.com/goods-copy-4781.html]スーパーコピーブランド格安販売店はこちらへ！品々の激安価格に持ったスーパーコピーブランド 代引きの新作はお客様に提供されます。安心、迅速、確実、お客様の手元にお届け致します。★弊社は9年の豊富な経験と実績を持っております。★一流の素材を選択し、精巧な作り方でまるで本物のようなな製品を造ります。★品質を重視、納期も厳守、お客様第一主義を貫きは当社の方針です。★驚きの低価格で商品をお客様に提供致します！★早速に購入へようこそ！[/url]

11. [url=http://www.gowatchs.com/brand-177.html]ビートの秒針の左側に何か他のものに興味があります。これは「飛行時間ダイヤルとそれが本当に性筋膜の手の一種である。完全な革命が各々の第2の手を持っているいくつかのを見て、我々はそれらを参照としての「飛ぶ」の理由は、彼らがとても速く動くように見えるということです、時計屋は彼らが飛んでいる」と言います。 ブレゲスーパーコピー 「伝統の手によりはむしろ、デウィット・2つの重なり合うディスクを開発した。ディスクに小さな穴があります、そして、上ディスクに移動するとき、それはダイヤルの上にユニークなアニメーションを作成します。[/url]