トップ «前の日記(2018-11-19) 最新 次の日記(2018-11-26)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|

2018-11-20 [長年日記]

_ [SAD]OpenShared 64bit化(つづき)

内部実装を確認したところ、参照動作時にpack表現内部のreference位置とheap/stack系のreference位置が同一視できることを前提にコーディングされている

アドレス空間を分離する為に再実装するのであれば、pack表現も見直した方が良い模様

多分、stdint.h + union + switchで Cで書き直す方が移植性的には素直

オブジェクトキャッシュの実装は、SAD stack or Heapは考えておくべき (最悪、リストの長さの合計スケールのstackが必要) dump側で辞書領域の大きさを書き出しておくと、 restore側は辞書のrealllocationが不要になる

少なくとも型フィールドが余っているので、リストの種別毎にデータ構造を分離する(List of Reals, List of Non-Real, Generic List)することで、特化リストの格納効率を上げられる(iad/iavが不要になる)

また、混合リスト時の表現もReal型フラグベクトルを導入すると圧縮出来る

uint64_tにするか uint32_t 2語でデザインするかは一考

unit64_tだとイテレータループが単純になるが、32bit環境だと型が存在しない可能性がある

長いリストの場合、64要素当たり 64 * 16bytes -> 8 + 64 * 8bytes 短いリストの場合、2要素の時 2 * 16bytes -> 8 + 1 * 8bytes (1要素の場合は、自明なリスト構造)

recall動作時に型判定・再帰動作を含むループを回しているので、動作効率面での劣化は、フラグベクトルの条件判定分のみと推定される


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記