內存硬碟可以極大地提高文件的讀寫速度,行情的讀寫是應用內存硬碟的絕好情況:
1,可以把行情小站的行情文件地址配置在內存硬碟上。這樣可以加速行情小站寫文件的速度。
2,本系統再從內存硬碟讀取,又可以加快讀取速度。
3,內存硬碟掉電後會丟失文件,這里基本不在乎這個缺點,因為行情文件本來就是臨時的,如果有持久化的需要,大部分內存硬碟也支持持久化的功能。
由於行情小站會不斷的更新行情dbf文件,系統需要探測到一旦行情文件被更新,就立即讀取。傳統的策略是不斷輪詢行情文件的狀態,如果發現行情文件的最後修改日期(或者再加上文件大小)改變時,就認為文件被更新。但是這種方式既低效,時延又高且不穩定。假設即使把輪詢時間設置為10ms一次(這意味著1秒鍾就要輪詢100次), 平均時延也要5ms。
JNotify庫支持Windows,Linux和MacOS,允許監視一個文件夾,當這個文件夾下的文件被增刪改時,發起回調通知。代碼示例如下:
部署時,需要將本地庫放在執行根目錄下,或者用-Djava.library.path=/native/library/path指定本地庫的位置。
採用JNotify,用(基於操作系統的)通知而不是輪詢,可以非常快地發現文件被更新,根據測試時間<1ms (我覺得應該遠小於1ms,但是由於文件修改時間單位是毫秒,沒辦法更精確的測量)。