Modifier vs function call

What is more gas efficient and secure, using a modifier(for example only owner) or calling a function to verify state(calling a function that returns owner address and compares that to the address that called a function)?

Adding multiple bids for each tokenId

I am making a test biding system in solidity, and I have a problem. I want to make a list of bids for each tokenId.

struct Bid {
        bool hasBid;
        uint tokenId1;
        address bidder;
        uint value;
    mapping (uint => Bid) public Bids; 
function enterBidForNFT(uint Index, value) public virtual  {
        Bids[Index] = Bid(true, Index, msg.sender, value);

There are implementations where only the highest bid is stored, but I want all of the bids to be available and their corresponding addresses.

Any idea?