- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我定义了三个数据结构,其中 S
、LL
、M
和 Object
,分别代表Set
、ListLike
、Map
、ByteString
:
nouns :: IO [Object]
nouns = liftM LL.words $ B.readFile "nounlist.txt"
obj :: IO ObjectSet
obj = liftM S.fromList nouns
actions :: IO ActionMap
actions = do
n <- nouns
let l = foldl' (\z x -> (x,Sell):(x,Create):z) [] n
return $ M.fromList $
(\(x,y) -> ((x, Verb y []), Out (Verb y []) x)) <$> l
现在我有一个函数将未计算的 Set 和 Map 绑定(bind)到变量 a
和 o
。一旦它进入 query
,就会通过用户输入接受并处理一个无限循环的查询。通过查找生成适当的响应。
process :: IO ()
process = do
a <- actions
o <- obj
forever $ query "" a o
请记住,我的 map 由 300,000 多个键值对组成:在我的计算机上,调用第一个查询时,第一次评估的初始时间开销大约在 3-5 秒之间;这很好,完全可以预料。随后的所有其他调用都非常灵敏且 react 灵敏,这正是我想要的方式。然而,这只是因为我将这段代码作为一个独立的可执行文件运行,并且有幸留在 process
的 IO ()
中。如果我要将此代码(以及未列出的其余随附代码)转换为一个库,以便与 say .. 一个 Snap Framework Web 应用程序 交互,我不一定会拥有这种奢侈。基本上我想说的是:如果我要从 process
中删除 forever
,那么评估的 Map 和 Set 肯定会被垃圾收集。事实上,当我从 Snap 应用程序调用该函数时会发生这种情况(我不能保持 forever
因为它会阻止 Snap 应用程序)。来自 Snap 应用程序的每个后续调用都会有相同的 3-5 秒开销,因为它会重新评估有问题的数据结构。
有没有一种简单的方法可以将 Map 和 Set 保存在内存中,以便每次后续查找都很快?我想出的一个想法是运行一个线程,该线程休眠并维护 Map 和 Set 的存储。然而,这对我来说绝对是矫枉过正。我忽略了什么?感谢您忍受我冗长的解释。
注意:我不一定要寻找代码答案、更多建议、忠告等。
最佳答案
您只能在 snaplet 初始化期间评估 obj
和 actions
一次并将结果存储在 snaplet 的状态中。
data SnapApp = SnapApp
{ objectSet :: ObjectSet
, actionMap :: ActionMap
}
appInit :: SnapletInit SnapApp SnapApp
appInit = makeSnaplet ... $ do
...
a <- liftIO actions
o <- liftIO obj
return $ SnapApp o a
现在您可以从 snap 的 Handler
访问它们:
someUrlHandler :: Handler SnapApp SnapApp
someUrlHandler = do
a <- gets actionMap
o <- gets objectMap
res <- query a o
...
这保证了 actions
和 obj
只会被评估一次。
关于multithreading - "Holding"内存中的数据映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886845/
我想做的是让 JTextPane 在 JPanel 中占用尽可能多的空间。对于我使用的 UpdateInfoPanel: public class UpdateInfoPanel extends JP
我在 JPanel 中有一个 JTextArea,我想将其与 JScrollPane 一起使用。我正在使用 GridBagLayout。当我运行它时,框架似乎为 JScrollPane 腾出了空间,但
我想在 xcode 中实现以下功能。 我有一个 View Controller 。在这个 UIViewController 中,我有一个 UITabBar。它们下面是一个 UIView。将 UITab
有谁知道Firebird 2.5有没有类似于SQL中“STUFF”函数的功能? 我有一个包含父用户记录的表,另一个表包含与父相关的子用户记录。我希望能够提取用户拥有的“ROLES”的逗号分隔字符串,而
我想使用 JSON 作为 mirth channel 的输入和输出,例如详细信息保存在数据库中或创建 HL7 消息。 简而言之,输入为 JSON 解析它并输出为任何格式。 最佳答案 var objec
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个以前可能被问过的问题,但我很难找到正确的描述。我希望有人能帮助我。 在下面的代码中,我设置了varprice,我想添加javascript变量accu_id以通过rails在我的数据库中查找记
我有一个简单的 SVG 文件,在 Firefox 中可以正常查看 - 它的一些包装文本使用 foreignObject 包含一些 HTML - 文本包装在 div 中:
所以我正在为学校编写一个 Ruby 程序,如果某个值是 1 或 3,则将 bool 值更改为 true,如果是 0 或 2,则更改为 false。由于我有 Java 背景,所以我认为这段代码应该有效:
我做了什么: 我在这些账户之间创建了 VPC 对等连接 互联网网关也连接到每个 VPC 还配置了路由表(以允许来自双方的流量) 情况1: 当这两个 VPC 在同一个账户中时,我成功测试了从另一个 La
我有一个名为 contacts 的表: user_id contact_id 10294 10295 10294 10293 10293 10294 102
我正在使用 Magento 中的新模板。为避免重复代码,我想为每个产品预览使用相同的子模板。 特别是我做了这样一个展示: $products = Mage::getModel('catalog/pro
“for”是否总是检查协议(protocol)中定义的每个函数中第一个参数的类型? 编辑(改写): 当协议(protocol)方法只有一个参数时,根据该单个参数的类型(直接或任意)找到实现。当协议(p
我想从我的 PHP 代码中调用 JavaScript 函数。我通过使用以下方法实现了这一点: echo ' drawChart($id); '; 这工作正常,但我想从我的 PHP 代码中获取数据,我使
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 5 年前。 我有一个动态表单,我想在其中附加一些其他 h
我正在尝试找到一种解决方案,以在 componentDidMount 中的映射项上使用 setState。 我正在使用 GraphQL连同 Gatsby返回许多 data 项目,但要求在特定的 pat
我在 ScrollView 中有一个 View 。只要用户按住该 View ,我想每 80 毫秒调用一次方法。这是我已经实现的: final Runnable vibrate = new Runnab
我用 jni 开发了一个 android 应用程序。我在 GetStringUTFChars 的 dvmDecodeIndirectRef 中得到了一个 dvmabort。我只中止了一次。 为什么会这
当我到达我的 Activity 时,我调用 FragmentPagerAdapter 来处理我的不同选项卡。在我的一个选项卡中,我想显示一个 RecyclerView,但他从未出现过,有了断点,我看到
当我按下 Activity 中的按钮时,会弹出一个 DialogFragment。在对话框 fragment 中,有一个看起来像普通 ListView 的 RecyclerView。 我想要的行为是当
我是一名优秀的程序员,十分优秀!