1
vibbow 2014-11-04 05:17:32 +08:00
肯定用“缓存”的方式更省电啊。
|
2
xcv58 OP @vibbow 明显电量不是问题,内存和性能才是问题。
性能是指尽量使采样不中断或尽可能少地中断。 缓存会产生的问题: 1. 写入缓存数据的等待时间,程序假死 2. 写入过程中采样必然中断,即使使用多线程,也需要考虑同步以及数据一致性问题 3. 缓存过大导致 low system memory 当然实时写也有问题: 1. 大量写入操作 2. 频繁进行 GC |
3
vibbow 2014-11-04 05:53:27 +08:00
做android watch还不考虑电量问题。。。。。。
|
4
xcv58 OP |
5
xcv58 OP 我自己 SB 了,竟然忘记 BufferedWriter 就是天生干这种事情的。
用这个优化之后,大概 17 秒进行一次 GC 每次会暂停消耗 13ms 左右。 |
6
Earthman 2014-11-04 07:56:39 +08:00
嗯,工业上这东西用“实时数据库”。用sqlite放在内存也很方便
|
8
incompatible 2014-11-04 09:02:59 +08:00
@xcv58 本楼回复的是2楼中你关于缓存的问题
1 写入缓存必然比你进行文件io操作要快(如果缓存比文件io还慢,那真的没必要用它了),怎么会假死?? 2. 为何写入过程中必然会导致采样中断?这是个典型的producer-consumer的场景,producer和consumer各开一个线程的话根本不会涉及到同步和一致性的问题。 |
10
xcv58 OP @incompatible 写入缓存数据是指将缓存写入到文件。
因为没有使用不同的线程。 Producer/Consumer 的前提是 Producer 生产速度不能超过 Consumer 太多(Buffer size 被填满),否则还是会租塞。 |