[Performance] Memory allocation and array structure

In most of the modern programming language I have learnt, such as C++ and Python, as well as Javascript, the memory allocation for array data structure is like this:

/* (e.g.) */ var a = [["a", "b", 'c"], [1, 2, 3], ["甲", "乙", "丙"]] //Java-script
// /* Memory allocation in order  */ "a" -->  'b" --> "c" --> 1 --> 2 --> 3 --> "甲" --> "乙" --> "丙"

Little thought

Suppose I am gonna store the following sets of data into an array, what’s the most best way to make it accessible most efficiently?

Name No Index












Given that the items can be accessed by knowing the index, I have thought of 2 ways of storage

Method 1: The traditional way

var data = [["Peter", 1], ["Mary", 5], ["Lily", 30], ["Jonathan", 25]];
// /* Memory storage: */ "Peter" --> 1 --> "Mary" --> 5 --> "Lily" --> 30 --> "Jonathan" --> 25

This way is very clear and easy to understand, but may not be quite efficient to access the {No} of each element. For instance, the computer has to read pass all {Name}s of each item, and the memory access footprint is long.

Method 2: The “Split" way

var data = [["Peter", "Mary", "Lily", "Jonathan"], [1, 5, 30, 25]];
// /* Memory storage: */ "Peter" --> "Mary" --> "Lily" --> "Jonathan" --> 1 --> 5 --> 30 --> 25

To loop through all {No}s of all data items, just loop within data[1], and the memory access footprint is limited to number of data items.

To access {Name}s and {No}s, just need data[0][x] and data[1][x], where “x" is the index of the item.

There may be a problem associated with this kind of array structure, such as deleting a datum element, it has to loop through different parts of the data (can be understood as “columns" of data in a table). Nonetheless, for storing rare-updated data, I prefer the “split" way.

《Megaman Escape》Python 小遊戲

Megaman Escape (Alpha)


這個是我的大學一年級的一個電腦Course其中一份Assignment。Assignment 的要求是讓玩家控制自定主題中的角色(我的主題是【洛克人】,所以主角就是是洛克人了)。首先選擇了關卡的難度(包括敵人的數目,和敵人的最高速度),然後就可以開始遊戲了。目的就是避過從視窗右邊衝過來的敵人。







  • 【發炮】(按 ”a”制發炮,每一炮的成本是 $150),剩餘彈藥數目會自動更新
  • 【核爆】(按 “s”發動核彈攻擊,畫面上的敵人都會一並給消滅,每一枚核彈的成本為$1000),剩餘彈藥數目會自動更新
  • 如果想隨時退出(按 “m” 返回主菜單)


  1. 讓敵人通過畫面的左邊,就會有$100進賬
  2. 用【激光炮】攻擊一個敵人,就有$90進賬(爲了減低暴力主義,哈哈-_-|||)
  3. 用【核彈】掃敵,分數視乎畫面的敵人數目,消滅一個敵人有$30進賬(擺明不划算)


  • Z = 100 (敵人通過的分數,預設為”100”)
  • laser_kill_pt = 90 (【激光炮】分數進賬,預設為”90”)
  • blast_kill_pt = 30 (【核彈】分數進賬,預設為 “30”)
  • laser_cost = 150 (【激光炮】成本,預設為 “150”)
  • blast_cost = 1000 (【核彈】成本,預設為 “1000”)

Read More »

First joy with Python – Turtle Graphics

If I can still remember, Turtle Graphics has been taught by my D&T (Design and Technology) teacher at secondary school. I thought it was stupid and the GUI is ugly. I knew nothing about programming, and certainly got very little thing to play with Turtle Graphics. I moved it “forward", “rotate" and nothing else.

In Python, Turtle is in 2D space and represented by a Triangle (What?)

But now, I am studying Python and find it rocks. It rocks with its easy-to-program feature, it rocks with tons of modules, and it rocks with Turtle! I have absolutely no pain in studying Python and programming with it. It’s not a language for programming geeks, but also for the newbies. Every statements are just like natural language, (Python is a so-high level programming language). Among its differences from other common programming language in the aspect of statements, its indention-as-structure feature is the most astounding.

Indentation can be used as building up the program structure? I thought it was just for easy reading for programmers, but in Python, it replaces the “BEGIN…END" in Pascal, and “{…}" brackets in C language. WOW! What’s more? I only need the colon to tell Python where I starts a statement section.

Turtle Graphics – Drawing an eye

2 Eyes actually →.→

(Very simple program with no efficiency taken into consideration)

As I have just began my study in Python, this post will be follow by fun updates in Python.

Great Sites for learning Python

  1. http://learnpythonthehardway.org/book/
  2. http://docs.python.org/3.3/tutorial/index.html

Read More »