測試時經驗總結:1.陣列快速初始化方法1.陣列長度超過1百萬,不能儲存在棧上,容易記憶體溢位。存為全域性變數,存在堆上;
記憶體分為棧記憶體,堆記憶體,全域性區,常量區,**區。
棧記憶體儲存的都是區域性變數。由作業系統管理,程式一旦離開作用域,就會釋放變數。棧的大小有限制,常見的是1m或2m大小,因此非常容易超出;
堆記憶體儲存的是物件,凡是new建立的都在堆中,堆內的資料由使用者釋放。堆的大小基本無限制,但得注意釋放記憶體。
全域性區儲存的是全域性變數和靜態變數。
2.記憶體直接操作,是比賦值快的,使用迴圈的方式賦值,速度顯著的慢;
函式有memcpy(),memmove(),memset()
void *memcpy(void *dst,void const *src,size_t length)
void *memmove(void *dst,void const *src,size_t length),效率慢於memcpy,但可以處理拷貝的兩端記憶體重疊的問題。
void *memset(void *a,int ch,size_t length),把從a開始的length個位元組設定成字元值ch,可以初始化字元陣列。
結果顯示,操作記憶體也沒快多少,快了1ms左右。
各種初始化為零的效能對比:
2.字元陣列儲存字串
3.計算**執行時間
方法1:包含標頭檔案(不準確,容易出錯)
#include
#include
//計時開始
clock_t start;
start = clock();
//計時結束
cout<
方法2:自定義計時類
標頭檔案:
#ifndef __mytimer_h__
#define __mytimer_h__
#include
class mytimer
private:
int _freq;
large_integer _begin;
large_integer _end;
public:
long costtime; // 花費的時間(精確到微秒)
public:
mytimer()
large_integer tmp;
queryperformancefrequency(&tmp);//queryperformancefrequency()作用:返回硬體支援的高精度計數器的頻率。
_freq = tmp.quadpart;
costtime = 0;
void start() // 開始計時
queryperformancecounter(&_begin);//獲得初始值
void end() // 結束計時
queryperformancecounter(&_end);//獲得終止值
costtime = (long)((_end.quadpart - _begin.quadpart) * 1000000 / _freq);
void reset() // 計時清0
costtime = 0;
#endif
使用方法:
mytimer timer;
timer.start();
sleep(1000);
timer.end();
cout << "耗時為:" << timer.costtime << "us";
預定義超全域性陣列
php設計者提供超全域性陣列的目的是為了讓php程式設計師可以更方便快捷的編寫程式 globals server request post get env 獲取環境變數,不要用 files cookie session1.給奇數中文加乙個全形空格,然後用trim 去除末尾的空格 2.使用urlenc...
三 陣列 PHP全域性陣列
php全域性陣列 php全域性陣列 1.server全域性陣列 3.cookie全域性陣列 4.env全域性陣列 echo echo 獲取伺服器名稱 env hostname echo 獲取系統shell env shell 5.request全域性陣列 6.session全域性陣列 7.files...
php超全域性陣列
php超級全域性變數列表 get獲得以get方法提交的變數陣列 post獲得以post方法提交的變數陣列 cookie獲取和設定當前 的cookie標識 session取得當前使用者訪問的唯一標識,以陣列形式體現,如sessionid以及自定義session資料 env當前php環境變數陣列 ser...