Giter Club home page Giter Club logo

Comments (5)

lgritz avatar lgritz commented on August 16, 2024

Here's what I wrote back to Jeremy:

Aha, interesting. I thought it was more like a "flush" -- write now rather than buffering longer, but I did not think it caused more in total to be written.

Here's my proposal: let's not do it by default, designate ImageSpec metadata "oiio:checkpoint" (when nonzero) to indicate that an output ought to frequently checkpoint if possible, and have the TIFF driver do so when that is found. Actually, let's make it so that the integer is the number of scanlines between checkpoints, with 0 meaning not to checkpoint at all.

Sound sane to you?

from oiio.

jeremyselan avatar jeremyselan commented on August 16, 2024

Ah, I've learned something. You were right, it is like a flush, where it re-writes header data and new buckets.

The issue is that the code,

write_tile(...)
if (y % m_spec.tile_height) == 0)
// Checkpoint

on an 8K tiled texture run checkpoint 21824 times! So the 6.6 GB was the header being overwritten tens of thousands of time.

I've tested checkpointing with the new timer, "oiio:CheckpointInterval" and seen that it is indeed really cheap. Maybe we should default it to 'on' (1s interval?) to match the intent of current practice?

from oiio.

lgritz avatar lgritz commented on August 16, 2024

Do we need an option at all? Maybe instead of "every N scanlines or buckets, checkpoint" it should simply be "every N scanlines or buckets, checkpoint if you haven't done so in T seconds". Set T=60 and call it a day? That wastes no time/bytes checkpointing for fast-writing frames, or even slow-writing frames. Checkpointing only would happen for glacial frames.

Does it even need the option, or would that give reasonable behavior?

from oiio.

jeremyselan avatar jeremyselan commented on August 16, 2024

Yah, if we pick a large number (like 60s) it seems unobjectionable. I'll do that and get rid of the option.

from oiio.

jeremyselan avatar jeremyselan commented on August 16, 2024

Fixed in db01f0e

from oiio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.