ASi

また O2センサーが異常

Multiecuscanで調べたところ、
11/19
P0161 Preheating resistance 2 below catalyser / Invavlid signal
P0156 Lambda 2 signal below catalyser / No signal
P0159 Lambda 2 signal below catalyser (slow) / Signal low / Fatal

リセットして、数日後
P0161 Preheating resistance 2 below catalyser / No signal / Fatal
P0156 Lambda 2 signal below catalyser / No signal / Fatal
P0159 Lambda 2 signal below catalyser (slow) / Signal low / Fatal

暖気すると P0161 以外起きなくなるのと、今のところ普通に走るので、pre heater だけが逝っているかもしれないが、いずれにしても要交換。

https://www.alfaowner.com/threads/the-obd-2-code-list-1.1180397/ によると、
P0156 O2 Sensor Circuit Malfunction (Bank 2 Sensor 2)
P0159 O2 Sensor Circuit Slow Response (Bank 2 Sensor 2)
P0161 O2 Sensor Heater Circuit Malfunction (Bank 2 Sensor 2)

どっちがバンク1か? フロント側が1とのこと。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12242784652

と言うことは、リア側バンクの post catlyser のセンサ。

https://www.i-love-alfa.net/product/268https://alfa-romeo.7zap.com/en/gt/x2/12543700-099/102/58+10258s02+4-0/?param=vin:zar93700005163232 より、
46805750
Post Cat. right(右) とも言われる (自分の記事 https://ashura156.hatenablog.com/entry/2020/02/08/194202 より)。

Note:
Bank1 pre cat 46751082
Bank2 pre cat 46764207
Bank1 post cat 46805749 (left)
Bank2 post cat 46805750 (right)

2020/6月に送税込¥18000で入手した4本は、半年で pre cat の一本が壊れ、今回 post cat が壊れた。今回はボッシュか純正にするか、、、


BOSCH ¥7912 送税込
https://store.shopping.yahoo.co.jp/bluebridge-shop/0258006391--d.html

sparetoでもあるが、€49.97 = ¥7,846.80
https://spareto.com/oe/46805750

ヤフーショッピングで購入した。

Sorted Collection

Sorted Collection が使いたいケースがあったので、APIの性能を比較した。

    static class User implements Comparable<User>{
        long time;
        String userId = "01234567";
        public User(long time) {
            this.time = time;
        }
        @Override
        public int compareTo(User o) {
            if (this.time < o.time) {
                return -1;
            }else if (this.time == o.time) {
                return 0;
            }else {
                return 1;
            }
        }
    }
    
    public static void main(String[] args) {
        final int CNT = 1000000;
        
        MemoryMeter meter = MemoryMeter.builder().build();

        // 重複のない乱数群を用意
        Random r = new Random();
        HashMap<Integer, Object> nums = new HashMap<>(CNT);
        for (int i = 0 ; i < CNT ; ++i) {
            int j = r.nextInt();
            if (nums.containsKey(j)) {
                --i;
                continue;
            }
            nums.put(j, null);
        }
        
        PriorityQueue<User> q = new PriorityQueue<>();
        long start = System.currentTimeMillis();
        Iterator<Integer> itor = nums.keySet().iterator();
        for (int i = 0 ; i < CNT ; ++i) {
            q.offer(new User(itor.next()));
        }
        Log.d("offer spent " + (System.currentTimeMillis() - start));
        Log.d("added " + q.size());
        long bytes = meter.measureDeep(q);
        Log.d("PriorityQueue = " + bytes + " bytes, " + bytes / CNT + " for one entry");
        start = System.currentTimeMillis();
        while(true){
            User u = q.peek();
            if (u == null) {
                break;
            }
            if (u.time > 500000) {
                break;
            }
            q.poll();
        }
        Log.d("remove spent " + (System.currentTimeMillis() - start));
        Log.d("PriorityQueue.size = " + q.size());
        
        Log.d("");
        
        TreeMap<User,Object> m = new TreeMap<>();
        r = new Random(0);
        start = System.currentTimeMillis();
        itor = nums.keySet().iterator();
        for (int i = 0 ; i < CNT ; ++i) {
            m.put(new User(itor.next()), null);
        }
        Log.d("put spent " + (System.currentTimeMillis() - start));
        Log.d("puted " + m.size());
        bytes = meter.measureDeep(m);
        Log.d("TreeMap       = " + bytes + " bytes, " + bytes / CNT + " for one entry");
        start = System.currentTimeMillis();
        NavigableMap<User, Object> hm = m.headMap(new User(500000), true);
        hm.clear();
        Log.d("remove spent " + (System.currentTimeMillis() - start));
        Log.d("TreeMap.size       = " + m.size());
    }
offer spent 154
added 1000000
PriorityQueue = 28554640 bytes, 28 for one entry
remove spent 324
PriorityQueue.size = 498783

put spent 843
puted 1000000
TreeMap       = 64000096 bytes, 64 for one entry
remove spent 60
TreeMap.size       = 498783