Q: Optimize DataGridViewRow visible = false Can this be optimized somehow? On my rather fast machine it takes 6300 milliseconds.
I have tried with hand-made DataGridViewRows and set the row.Visible = false before adding to the grid, but then I cannot use DataSource/DataBoundItem which is an important feature as well.
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MakeMostRowsInVisible();
        }

        private void MakeMostRowsInVisible()
        {
            dataGridView1.DataSource = Enumerable.Range(0, 8000)
                .Select(x => new Entity())
                .ToList();

            var currencyManager = (CurrencyManager)BindingContext[dataGridView1.DataSource];
            currencyManager.SuspendBinding();

            int index = 0;

            var sw = Stopwatch.StartNew();
            foreach (DataGridViewRow f in dataGridView1.Rows)
            {
                index++;
                f.Visible = (index % 8 == 0);
            }
            Console.WriteLine("Used time:" + sw.ElapsedMilliseconds);

            currencyManager.ResumeBinding();
        }
    }

    class Entity
    {
        static int counter;
        public Entity()
        {
            Column1 = ++counter;
        }

        public int Column1 { get; set; }
        public String Column2 { get; set; }
    }
}

You need to create a WinForm project and add a DataGrid to the default Form1. Change code in Form1.cs to the above code.
Edit: This is code written for benchmark purpose only. My real task is to hide/show many rows dynamically without binding a new data source. 
