国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

為下拉式數(shù)據(jù)窗口建立緩沖區(qū)

2024-07-21 02:09:19
字體:
供稿:網(wǎng)友
中國最大的web開發(fā)資源網(wǎng)站及技術(shù)社區(qū),
為下拉式數(shù)據(jù)窗口建立緩沖區(qū)
張健姿 01-6-22 下午 04:47:33

同 其 他4gl 工具 如delphi,visual basic 的 早 期 版 本 一 樣,powerbuilder4.0 以 前 所 生成 的 可 執(zhí) 行 文 件 使 用 是 偽 代 碼, 也 稱p-code(pseudo-code)。p-code 在 運 行 時 是 被 解 釋 執(zhí) 行 的, 更 準(zhǔn) 確 地 說,p-code 使 用 的是 虛 擬 機 指 令, 為 不 同 的 宿 主 機 提 供 共 享 的 操 作 命令。 在 運 行 時, 操 作 系 統(tǒng) 根 據(jù) 不 同 平 臺 解 釋 實 現(xiàn)p-code 指 令。 一 條p-code 指 令 可 以 替 代 幾 條 機 器 代 碼 指 令, 這樣 就 減 少 了 執(zhí) 行 代 碼 的 大 小, 不 過 卻 以 應(yīng) 用 的 執(zhí) 行 效率 為 代 價。 一 般 的,p-code 的 執(zhí) 行 速 度 要 慢 于 編 譯 代 碼,但 文 件 的 大 小 卻 小 于 編 譯 代 碼。 powerbuilder 5.0 引入 了 生 成 全 編 譯 的 可 執(zhí) 行 代 碼 的 功 能, 以 提 高 運 行 效率, 但 同 時 它 也 保 留 了 使 用p-code 為 可 執(zhí) 行 文 件 的 功能。 使 用p-code 的 應(yīng) 用 程 序 包 括 執(zhí) 行 文 件.exe 和powerbuilder 的動 態(tài) 連 接 庫.pbd, 而 編 譯 代 碼 所 產(chǎn) 生 的 執(zhí) 行 文 件 為.exe 文件 和 動 態(tài) 連 接 庫dll。 什 么 是 編 譯 代 碼 編 譯 代 碼 首先 以p-code 為 基 礎(chǔ),powerbuilder 首 先 根 據(jù)p-code 創(chuàng) 建c 代 碼, 然 后將c 代 碼 編 譯 成 為 機 器 代 碼 的 執(zhí) 行 文 件。 編 譯 后 的 執(zhí)行 程 序 中, 所 有 指 令 都 是 實 際 的 機 器 代 碼。 這 就 意 味著 這 樣 的 執(zhí) 行 文 件 的 大 小 將 遠(yuǎn) 大 于p-code。 使 用 編 譯 代碼 仍 需 要powerbuilder 的 運 行 庫,powerbuilder 在 執(zhí) 行 機 器 代 碼時, 仍 使 用 共 享 的 函 數(shù) 庫, 這 樣 做 的 目 的 主 要 是 為 了節(jié) 省 內(nèi) 存。 使 用 動 態(tài) 連 接 庫 可 以 避 免 將 所 有 的 功 能 函數(shù) 都 寫 在 一 個 可 執(zhí) 行 文 件 中, 以 減 小 可 執(zhí) 行 文 件 的 體積。 而 在windows 環(huán) 境 中, 內(nèi) 存 中 留 有 一 份dll 的 拷 貝 可 以為 多 個 應(yīng) 用 程 序 使 用。 此 外powerbuilder 5.0 還 壓 縮 了 一 些dll 中 函 數(shù) 的 大 小, 現(xiàn) 在32 位 平 臺 上 運 行 時 只 需7 個 動 態(tài) 連接 庫, 解 壓 縮 后 為4.5m。 應(yīng) 用 所 需 要 的 其 它dll 如 用 于 數(shù)據(jù) 庫 訪 問、 分 布 式powerbuilder, 及rtf 編 輯 器 等 可 在 用 到 時動 態(tài) 地 裝 入。 編 譯 代 碼 創(chuàng) 建 編 譯 代 碼的 創(chuàng) 建 有 以 下 幾 個 步 驟: 在 開 發(fā) 的 過 程 中,powerscript 首 先 被翻 譯 成 了p-code, 當(dāng) 您 在script 編 輯 器 中 編 寫 完 一 個 事 件 或函 數(shù) 的 代 碼 返 回 窗 口 時, 系 統(tǒng) 就 會 自 動 地 翻 譯 這 一 段script 代 碼。 當(dāng) 您 在 工 程 畫 筆 中 創(chuàng) 建p-code 可 執(zhí) 行 文 件 時,powerbuilder 將 為 不 同 的pbl 中 不 同 對 象 之 間 的 引 用 建 立 起 連 接, 并將 這 些 對 象 拷 貝 到 指 定 的exe 或pbd 文 件 中。 這 是 一 個 相對 較 快 的 過 程。 接 下 來p-code 將被 翻 譯 成 為c 語 言 的 語 句。 在 這 一 過 程 中, 工 程 畫 筆 窗口 下 面 的 微 幫 助 中 將 顯 示"compiling ... " 的 字 樣, 這一 過 程 約 占 全 部 編 譯 時 間 的10 %。 然 后 是 將c 代 碼 編 譯和 鏈 接 成 為 機 器 代 碼, 形 成 可 執(zhí) 行 文 件 和 動 態(tài) 連 接庫, 在 這 一 步 驟 中, 微 幫 助 顯 示 的 是"generating...",這 一 編 譯 過 程 最 費 時 間, 將 占 約90 % 的 編 譯 時 間。 通 過 上 面 的介 紹, 我 們 看 到 創(chuàng) 建 機 器 代 碼 所 用 的 時 間 比 產(chǎn) 生p-code 的 用 時 要 多 得 多, 因 為 后 者 只 是 一 個 二 進(jìn) 制 代 碼 搬 運的 過 程。 因 此 在 開 發(fā) 過 程 中, 我 們 一 般 使 用 的 主 要 是p-code,只 是 在 最 終 交 付 用 戶 使 用 時, 才 根 據(jù) 實 際 情 況 選 擇 是否 創(chuàng) 建 機 器 代 碼。 編 譯 代 碼的 優(yōu) 勢: 在 以 下 這 幾 個 方 面, 將powerscript 代碼 編 譯 成 為 機 器 代 碼 將 得 到 較 快 的 運 行 速 度: · 循 環(huán) 結(jié) 構(gòu) · 浮 點 運 算 · 整 數(shù) 運 算 · 函 數(shù) 調(diào) 用 但 是 在 另 外的 一 些 方 面, 編 譯 成 為 機 器 代 碼 并 不 能 使 運 行 速 度 明顯 加 快, 如 涉 及 圖 形 用 戶 界 面, 數(shù) 據(jù) 庫 訪 問, 小 數(shù) 運算, 字 符 串 操 作 等。 在 有 些 情 況 下, 兩 種 代 碼 的 速 度是 相 同 的, 如 對 資 源 的 調(diào) 用 和 對 數(shù) 據(jù) 窗 口 的 執(zhí) 行。 在這 些 情 況 下, 您 就 無 法 通 過 使 用 編 譯 代 碼 來 提 高 運 行的 速 度 了。 如 果 您 的 應(yīng)用 是 以 執(zhí) 行 自 身 的 代 碼 為 主, 例 如 應(yīng) 用 中 較 多 的 是 同一 條 代 碼 被 反 復(fù) 執(zhí) 行( 如 循 環(huán)) 或 是 編 寫 的 代 碼 主 要用 來 進(jìn) 行 數(shù) 學(xué) 運 算, 這 樣 的 應(yīng) 用 應(yīng) 當(dāng) 使 用 編 譯 代 碼。在 函 數(shù) 調(diào) 用 方 面, 使 用 機 器 碼 也 要 比p-code 快 得 多。 因此 如 果 您 的script 大 量 的 調(diào) 用 函 數(shù) 或 是 采 用 新 的 語 法 形式 調(diào) 用 事 件, 使 用 機 器 碼 也 將 是 個 好 的 選 擇。 不 過 您應(yīng) 當(dāng) 記 住, 編 譯 代 碼 的 執(zhí) 行 文 件 大 小 要 比p-code 大 得多, 因 為 一 條powerscript 代 碼 將 有 可 能 編 譯 成 為5 條 甚 至10 條c 代 碼。 當(dāng) 這 些c 代 碼 被 編 譯 后, 可 執(zhí) 行 的 代 碼 將 遠(yuǎn)遠(yuǎn) 大 于 相 應(yīng) 的p-code, 因 此 如 果 您 的 應(yīng) 用 程 序 的 文 件 大小 是 您 應(yīng) 用 的 首 要 考 慮 因 素, 或 者 您 的 應(yīng) 用 較 多 的 是數(shù) 據(jù) 庫 訪 問, 那 您 應(yīng) 當(dāng) 選 擇 使 用p-code。 提 高 應(yīng) 用 的 性 能 事 實 上, 一個 好 的 數(shù) 據(jù) 庫 的 物 理 設(shè) 計 和 應(yīng) 用 程 序 的 模 塊 設(shè) 計 可以 大 大 地 提 高 應(yīng) 用 的 性 能。 如 果 應(yīng) 用 設(shè) 計 不 好, 即 使使 用 了 編 譯 代 碼, 也 不 會 得 到 很 好 的 系 統(tǒng) 性 能。 此 外調(diào) 整 系 統(tǒng) 參 數(shù) 設(shè) 置 和 合 理 的 物 理 帶 寬, 可 以 使powerbuilder 5.0 的 應(yīng) 用 運 行 得 十 分 快 捷。 在powerbuilder 5.0 中, 系 統(tǒng) 內(nèi) 部 已 經(jīng) 在 一 些 功 能 上 進(jìn) 行 了 增 強, 對 這 些功 能 加 以 利 用, 本 身 就 可 以 實 現(xiàn) 性 能 的 優(yōu) 化。 · 使 用powerbuilder 5.0 的tab 控 件 時, 如 果 在tabpage 的 屬 性 中 選 中"create on demand" 這 個 復(fù) 選 框, 在 運 行時, 只 有 當(dāng) 用 戶 選 擇 這 個tabpage,powerbuilder 才 去 初 始 化 該tabpage 對 象 的 實 例。 · 使 用datastore 而 不 要 使 用 不 可 視 的datawindow 作 為 數(shù) 據(jù) 的 緩 沖 區(qū)。 · 傳 遞string、datetime 等 數(shù) 據(jù) 類 型 的 參 數(shù)盡 可 能 使 用read-only 方 式, 因 為 同 采 用reference 方 式 相 比,powerbuilder 無 需 為 這 些 參 數(shù) 再 于 內(nèi) 存 中 復(fù) 制 一 份 拷 貝。 同 理,reference 方 式 要 比value 法 傳 參 更 快 一 些。 · 使 用 局 部 變 量 要 比 全 局 和 共 享 變 量要 快 一 些, 因 為 局 部 變 量 存 在 棧 中, 而 全 局 變 量 則 存儲 于 遠(yuǎn) 堆。 這 個 速 度 的 差 異 在 使 用 機 器 代 碼 時 比p-code 更 為 明 顯。 · 使 用 數(shù) 組 對datawindow 的 數(shù) 據(jù) 進(jìn) 行 賦值, 而 不 要 使 用setitem( ) 和getitem( ) 系 列 的 函 數(shù), 因 為 前 者只 使 用 了 一 次 函 數(shù), 就 調(diào) 用 了 所 有 的 行 和 列。 · 為 加 快 編 譯 速 度, 不 要 在 一 個 事 件或 函 數(shù) 中 編 寫 過 長 的 代 碼, 將 它 們 分 成 幾 個 函 數(shù) 或 其他 可 重 用 的 代 碼 對 象。 · 調(diào) 整 您 的 數(shù) 據(jù) 庫。 一 般 來 說, 數(shù) 據(jù)庫 訪 問 在 客 戶/ 服 務(wù) 器 結(jié) 構(gòu) 的 應(yīng) 用 中 要 占 用 大 量 的 時間, 盡 可 能 利 用powerbuilder 的 特 性 來 減 少 數(shù) 據(jù) 庫 訪 問 的 時間, 包 括: 1. 在5.0 中dbparm 缺 省 設(shè) 置staticbind = 1, 也 就是 說 在 檢 索 數(shù) 據(jù) 之 前,powerbuilder 并 不 首 先 獲 取 查 詢 數(shù) 據(jù)結(jié) 果 集 結(jié) 構(gòu) 的 描 述, 這 樣 作 可 以 提 高 數(shù) 據(jù) 的 檢 索 速度, 但 是 如 果 數(shù) 據(jù) 窗 口 同 數(shù) 據(jù) 庫 的 結(jié) 果 集 不 匹 配 時,將 發(fā) 生 錯 誤。 因 此 如 果 您 需 要 動 態(tài) 改 變 數(shù) 據(jù) 窗 口 所 查詢 的 表, 而 且 這 些 表 結(jié) 構(gòu) 不 同 時, 您 應(yīng) 當(dāng) 將staticbind 的值 設(shè) 置 為0。 2. dbparm 缺 省 設(shè) 置 允 許datawindow 放 置blob 字段, 使 用data pipeline 可 以 對 數(shù) 據(jù) 庫 插 入blob 字 段 的 數(shù) 據(jù)。 3. 通 過dbparm 的 設(shè) 置 可 以 使 數(shù) 據(jù) 庫 支 持游 標(biāo)。 設(shè) 置dbparm sqlcache = n 將 告 訴powerbuilder 將 為 多 少 個 使 用不 同select 語 句 的 游 標(biāo) 建 立 緩 沖。 如 果 您 多 次 重 復(fù) 使 用同 一 個select 語 句, 當(dāng) 緩 沖 區(qū) 內(nèi) 有 數(shù) 據(jù) 時, 檢 索 的 速 度將 大 大 加 快。sqlcache 的 缺 省 值 為0。 4. powerbuilder 5.0 中 對 數(shù) 據(jù) 窗 口 有 了 這 樣的 一 個 選 項, 可 以 將 數(shù) 據(jù) 窗 口 的 結(jié) 果 集 保 存 在 本 地 磁盤 上。 這 樣 作 可 以 減 少 內(nèi) 存 的 使 用, 使 您 創(chuàng) 建 更 大 的報 表, 不 過 存 取 速 度 比 將 結(jié) 果 集 放 在 內(nèi) 存 中 要 慢 得多。 如 果 您 的 數(shù) 據(jù) 窗 口 將 顯 示 的 不 是 一 個 很 大 的 報表, 一 般 還 是 將 結(jié) 果 集 放 在 內(nèi) 存 中 為 佳。 其 它 的 注 意 事 項 對 于 用 戶 使用powerbuilder 編 譯 代 碼, 還 有 以 下 幾 點 值 得 說 明: · powerbuilder 產(chǎn) 生 編 譯 代 碼 的 速 度 很 慢,應(yīng) 盡 可 能 使 用 主 頻 較 快 的 計 算 機, 最 多 至64m 內(nèi) 存, 不過 在5.0 的 版 本 中, 多cpu 對 提 高 編 譯 速 度 沒 有 任 何 幫助。 · powerbuilder 所 使 用 的watcom 的 技 術(shù) 主 要 是32 位 的 技 術(shù), 盡 管 在32 位 平 臺 上 有 生 成16 位 代 碼 的 選 項,但 是 速 度 卻 并 不 見 佳。 另 外 在16 位 平 臺 上, 我 們 不 能產(chǎn) 生32 位 的 應(yīng) 用 程 序。 · 編 譯16 位 應(yīng) 用 程 序 有 一 個 限 制 就 是代 碼 和 數(shù) 據(jù) 都 不 能 超 過64k, 如 果 函 數(shù) 或 事 件 中 的 代 碼過 長,powerbuilder 在 創(chuàng) 建exe 時 將 產(chǎn) 生 錯 誤。 我 們 推 薦 的 解決 辦 法 就 是 將 長 代 碼 分 解 成 多 個 小 函 數(shù), 這 樣 做 也 可以 提 高 運 行 效 率 并 有 利 于 您 對 應(yīng) 用 代 碼 的 維 護(hù)。 · 如 果 您 在windows nt 或windows 95 上 運 行16 位應(yīng) 用 程 序, 您 所 使 用 的 運 行 庫 也 應(yīng) 當(dāng) 是16 位 的。 · 在 一 個powerbuilder 應(yīng) 用 中 我 們 只 能 使 用p-code 的pbd 或 編 譯 代 碼dll 中 的 一 種, 而 不 能 將 其 混 合 使 用,不 過 唯 一 的 例 外 是 使 用powerbuilder 創(chuàng) 建ole 服 務(wù) 器。 · 如 果 您 只 是 想 改 變 一 個dll, 而 并 不想 重 新 編 譯 全 部 的 應(yīng) 用, 您 可 以 在library 畫 筆 中 選 擇library|build runtime library... 的 菜 單 項。 · 在 編 譯 時, 系 統(tǒng) 將 首 先 剔 除 注 釋 語句, 所 以script 中 注 釋 語 句 的 多 少 對 編 譯 速 度 沒 有 影響。 · 在 您 使 用powerbuilder 的plug-in 技 術(shù) 時, 您不 能 使 用 編 譯 代 碼。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 监利县| 宁蒗| 奉化市| 兴和县| 金坛市| 蒙山县| 盐边县| 鹰潭市| 通江县| 澄江县| 澄迈县| 泌阳县| 汝南县| 沛县| 高邑县| 平果县| 苍山县| 两当县| 高淳县| 玛曲县| 新巴尔虎左旗| 岳普湖县| 济宁市| 古丈县| 绥阳县| 镇远县| 古蔺县| 武城县| 依兰县| 安达市| 通榆县| 宜兰市| 武隆县| 项城市| 洛川县| 绍兴市| 潜江市| 黄冈市| 南充市| 慈利县| 岚皋县|